我正在通过Ory/Hydra 5分钟教程。我能够创建一个必须使用PKCE使用authorization_code流登录的公共客户端,如下所示:
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...the应用程序无法使用PKCE流:
invalid_request 此客户端在执行授权代码流时必须包括一个code_challenge,但它是缺少的。
我在用于创建示例应用程序的CLI文档中查找了正确的配置,但没有成功。如何启动示例客户端应用程序设置以使用PKCE?
发布于 2022-03-16 11:15:39
简而言之,使用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在进入授权流时缺少了最后两个args:code_challenge和code_challenge_method。如果您想使用PKCE流,您需要自己实现它。
查看这个链接,它可能会帮助您摆脱它:https://docs.cotter.app/sdk-reference/api-for-other-mobile-apps/api-for-mobile-apps
https://stackoverflow.com/questions/71044992
复制相似问题