关于OAuth 2.0授权流程的问题

问题描述 投票:0回答:1

我一直在看Microsoft OAuth2 flow中的图像,但有一个问题

enter image description here

会弹出一个浏览器对话框,在该对话框中输入凭据并同意权限;作为回报,我得到一个authorizationCode。有了这个authorizationCode,我应该向/oauth2/token发出请求,并交换access_tokenrefresh_token

为了获得access_tokenrefresh_token,我必须将authorizationCodeclientSecret组合。

我的问题是:谁应该请求access_tokenfrontendbackend

我得到authorizationCode并将其发送到保存clientSecret的后端,并进行了一些魔术操作,然后将access_token返回给我,我可以将其进一步用于针对WebAPI进行验证?还是应该在前端完成所有操作,然后直接将access_token发送到API?

谢谢!

oauth-2.0 authorization
1个回答
0
投票

我认为最好的方法是使用Proof Key for Code Exchange(PKCE)代替密码。 Microsoft supports it,请参阅auth请求参数code_challengecode_challenge_method。然后是code_verifier端点的token参数,您可以使用该参数代替密码。还有OAuth 2.0 for Native Apps RFC,它表示:

公开的本机应用客户端必须实现代码的证明密钥交换(PKCE [RFC7636])对OAuth和授权的扩展服务器必须为此类客户端支持PKCE

[示例:在发出身份验证请求之前,您生成一个随机文本(后来用作code_verifier),然后创建其SHA-256哈希(用作code_challenge),并让身份验证服务器知道您使用了具有&code_challenge_method=S256的SHA-256。身份验证服务器保留这些值,并且当您向token端点询问令牌时,它将从code_verifier值中创建自己的SHA-256哈希。如果哈希等于您之前发送的code_challenge,则服务器将接受该请求。

© www.soinside.com 2019 - 2024. All rights reserved.