oauth2.0 使用Azure AD交换身份验证代码的令牌

w8ntj3qf  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(162)

问题

我有办法拿到我的令牌我需要一个curl命令发送到Azure AD(包括验证令牌),以使其使用身份验证代码调用我的回调URL。(然后我将使用它进行另一次调用以获取JWT访问令牌。

What I Have Tried

我试着在谷歌上搜索这个curl命令是什么,但我似乎找不到任何明确的东西。
使用另一个IDP(WSO2),我可以发送一个普通的请求来进行身份验证,而不需要在请求中包含任何用户信息。然后,它返回一个WWW-Authenticate报头,要求我协商身份验证。然后我发送一个Authentication头,值为Negotiate {Kerberos Token}。然后,这将使用授权代码调用我的回调URL。但这两个都不适用于Azure AD。
当我将第一个请求发送到Azure AD时,我会得到一个登录页面的HTML(而不是与我的Azure令牌协商的请求)。WSO2有一种方法在请求中指明它所谓的“领域”。这让我表明,我想使用综合安全路线与它。我没有发现Azure AD的类似语法。

发送令牌并取回授权码所需的请求语法是什么?

注意:我实际上并不打算使用curl命令,但有了它,我就可以将它的功能集成到代码中。

klr1opcd

klr1opcd1#

我不认为这是OAuth真正的做事方式。客户端不应该知道特定的身份验证协议,也不应该将凭证作为其应用程序代码的一部分进行处理。

代码流方法

OAuth 2.0和OpenID Connect解决方案是让客户端使用代码流重定向到授权服务器(AS)。然后,AS运行基于身份验证的身份验证方法。这是通过浏览器重定向管理的。
KERBEROS OAUTH FLOW是个很好的住宿地方。
通常,像Azure AD这样的云AS会重定向到支持基于标准的身份验证(如SAML或OIDC)的内部部署身份提供程序(IDP),并且还能够与内部部署的LDAP/ LDAP存储(如Active Directory)进行交互。
这种类型的流必须涉及系统浏览器,因为作为OAuth 2.0的核心原则,用户凭证必须从客户端外部化。
上次我集成这个流时,浏览器有先决条件,IDP域名必须在本地内联网区域中,以便浏览器自动发送用户的身份证。
如果用户在工作网络之外,则会出现质询,其中会显示表单,并且需要手动输入凭据。

摘要

OAuth 2.0中广泛使用基于Web的登录,尽管有一些警告,现在人们越来越多地在工作网络之外操作。
取决于IT设置。Azure AD也可以充当IDP。但要知道,有两种流动。首先,从应用程序到AS的代码流。第二,AS与IDP集成,IDP执行数据库集成工作。

相关问题