Azure AD:我可以使用授权码令牌来从Web服务请求访问令牌吗?

时间:2020-04-07 16:15:56

标签: azure extjs oauth-2.0 pkce

所以,这与这里的问题有关:How to enable CORS in an Azure App Registration when used in an OAuth Authorization Flow with PKCE?

我想为用ExtJS编写的单页JavaScript应用程序实现OAuth 2。 服务器端是用.NET(当前为4.6.2)编写的,同时具有UI(实现Ext.Direct)使用的JSON服务和用于客户端集成的SOAP服务。

我们目前处理自己的身份验证,其工作原理与授权代码流程非常相似。我们使用客户端ID,用户名和密码登录以获取令牌生成令牌(TGT),然后使用该令牌请求短暂的产品服务令牌(PST)。请求PST可以延长TGT的寿命。当TGT过期时,用户必须重新进行身份验证。

对于OAuth 2路由,我显然希望用户界面将人们引导到Azure的登录页面上,该用户以他们可能需要的MFA身份在那里登录,然后以已知用户的身份返回UI。 我不为产品服务令牌而去哪里,尽管我认为如果可能的话去Azure还是有意义的,因为最终我们希望将所有人转移到我怀疑的方向。

因此,我将上面的一些代码包装在ExtJS类中,并设法检索了有效的授权令牌。到现在为止还挺好。 然后,当我尝试请求访问令牌时,我遇到了与该问题的发布者一样的CORS问题。 我只是看不到现在有谁可以在Azure中使用带有PKCE流程的授权码,因为您的应用程序将永远不会托管在肯定用于登录的域上!

无论如何。我想知道我的选择。 我现在想知道是否可以将授权代码(可能带有PKCE代码)传递回UI并传递给Web服务,并使Web服务处理与Azure的访问令牌通信。 那是否有更多成功的机会,还是我只是在那里遇到同样的问题?

隐式流不是一种选择。我们的客户都不会接受。

还有哪些其他选择? 我应该使用纯服务器端的Azure选项,然后担心UI?

努力寻找前进的方向! 不胜感激。

干杯, 韦斯特

1 个答案:

答案 0 :(得分:0)

好吧,在几天之后,我对Azure实施的愚蠢性大加指责之后,我在这里偶然发现了一些隐藏的信息:https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser#prerequisites

如果您将清单中的redirectUri的类型从“ Web”更改为“ Spa”,它将给我一个访问令牌!我们在做生意! 它破坏了Azure中的UI,但事实如此。

我希望这可以帮助其他经历类似痛苦的人。 我还将在链接的线程上发布:)