因此,这与这里的问题有关:How to enable CORS in an Azure App Registration when used in an OAuth Authorization Flow with PKCE?
我想为我们用ExtJS编写的单页面JavaScript应用程序实现OAuth 2。服务器端是用JSON (目前是4.6.2)编写的,它既有由UI (实现Ext.Direct)使用的.NET服务,也有用于客户端集成的SOAP服务。
我们目前处理自己的身份验证,它的工作原理与授权码流非常相似。我们使用客户端id、用户名和密码登录以获取令牌生成令牌(TGT),然后使用此令牌请求短期产品服务令牌(PST)。请求PST延长了TGT的寿命。当TGT到期时,用户必须重新进行身份验证。
对于Azure 2路线,我显然希望用户界面能够引导用户进入OAuth的登录页面,让用户使用他们可能需要的MFA登录到那里,然后以已知用户的身份返回到UI。我并不介意我去哪里寻找产品服务令牌,尽管我认为如果可能的话,去Azure是有意义的,因为我怀疑最终我们希望每个人都朝着这个方向前进。
因此,我将上面的一些代码包装在一个ExtJS类中,并设法检索到一个有效的授权令牌。到目前一切尚好。然后,当我尝试请求访问令牌时,我遇到了与该问题的发布者相同的CORS问题。我只是看不到任何人可以在Azure中使用授权代码和PKCE flow,因为你的应用程序永远不会托管在用于登录的同一个域上?!
不管怎么说。我在想我的选择。我现在在想,我是否可以将传递回UI的授权码(可能带有PKCE代码)发布到web服务,并让web服务处理与Azure的通信,以获取访问令牌。这是否有更大的成功机会,或者我只是要在那里遇到同样的问题?
隐式流不是一个选项。我们的客户都不会接受的。
还有其他选择吗?有没有一个纯服务器端到Azure的选项,我应该使用,然后再担心UI?
努力寻找前进的方向!如果您有任何见解,我将不胜感激。
干杯,Westy
发布于 2020-04-09 00:52:09
好的,经过几天的努力,我偶然发现了一个隐藏的信息:https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser#prerequisites
如果您将清单中的redirectUri类型从“Web”更改为“Spa”,它会返回一个访问令牌!我们开始做生意了!它破坏了Azure中的UI,但就这样吧。
我希望这能帮助其他经历类似痛苦的人。我也会在链接的帖子上发帖:)
https://stackoverflow.com/questions/61084562
复制相似问题