Cognito - 没有密钥的授权码授予

Cognito - Authorization Code Grant without secret key

我有一个前端应用程序,我想连接 Cognito User Pool

我正在使用 openidconnect playground 来测试身份验证流程,这是我的 Cognito 配置:

我没有输入客户端密码,因为我认为将客户端密码放在前端是不安全的 URL。

这是应用客户端设置:

使用授权码授予,因为其余部分需要客户端密码。

所以,这是 URL 登录:

https://myuserpoolname.auth.eu-west-1.amazoncognito.com/oauth2/authorize?
client_id=YYYYYYYYY
&redirect_uri= https://openidconnect.net/callback
&scope=openid customscope/router customscope/modem
&response_type=code
&state=2282ed48ec2fc0eb0806a532f2eQQf02d0918949

之后,为了交易所获取令牌,我使用了这个请求:

POST https://myuserpoolname.auth.eu-west-1.amazoncognito.com/oauth2/token
grant_type=authorization_code
&client_id=YYYYYYYYY
&redirect_uri=https://openidconnect.net/callback
&code=bd105ab3-Z-X-Y-6109170d1e46

但如果我不共享 client_secret 作为参数,它 returns 就会出错。

如何在没有客户端密钥的情况下进行身份验证?那可能吗? 如果没有,我如何管理客户端密码以避免在前端应用程序中管理它?

谢谢。

在 public 客户端上使用授权码授权类型时,您应该使用 PKCE.