【问题标题】:Ory Hydra Example Client - how to setup for PKCEOry Hydra 示例客户端 - 如何设置 PKCE
【发布时间】:2022-03-24 01:14:02
【问题描述】:

我正在查看Ory/Hydra 5min tutorial。我能够创建一个公共客户端,该客户端必须使用授权代码流程和 PKCE 登录,如下所示:

    hydra clients create \
    --endpoint http://127.0.0.1:4445 \
    --id public-client \
    --grant-types authorization_code,refresh_token \
    --response-types code \
    --scope offline \
    --token-endpoint-auth-method none
    --callbacks http://127.0.0.1:5555/callback

我还通过设置 env 变量将 Hydra 配置为要求公共客户端使用 PKCE

OAUTH2_PKCE_ENFORCED_FOR_PUBLIC_CLIENTS=true

当我按照教程创建这样的用户应用程序时......

    hydra token user \
    --client-id public-client \
    --endpoint http://127.0.0.1:4444/ \
    --port 5555 \
    --scope offline

...应用程序无法使用 PKCE 流程:

无效请求

此客户端在执行授权代码流时必须包含一个 code_challenge,但它缺少。

我查看了CLI docs for creating the sample application 的正确配置,但没有成功。如何启动示例客户端应用程序设置以使用 PKCE?

【问题讨论】:

    标签: oauth-2.0 oauth pkce ory-hydra


    【解决方案1】:

    简而言之,使用hydra token user cmd 将不起作用,因为它还不支持使用PKCE 进行测试。

    要初始化授权流程 + pkce,您的请求应如下所示(只是一个示例,不是 hydra 的文档)

    GET /authorize?
    response_type=code
    & client_id=<client_id>
    & state=<state>
    & scope=<scope>
    & redirect_uri=<callback uri>
    & resource=<API identifier>
    & code_challenge=<PKCE code_challenge>
    & code_challenge_method=S256
    

    所以上面的 cmd 在初始化授权流程时缺少最后 2 个参数:code_challengecode_challenge_method。如果要使用PKCE流,需要自己实现。

    查看此链接,它可能会帮助您摆脱困境: https://docs.cotter.app/sdk-reference/api-for-other-mobile-apps/api-for-mobile-apps

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 2023-01-16
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多