0

因此,这与此处的问题有关: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 使用的 JSON 服务(实现 Ext.Direct)和用于客户端集成的 SOAP 服务。

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

对于 OAuth 2 路由,我显然希望用户界面将人们引导到 Azure 的登录页面,用户使用他们可能需要的任何 MFA 登录那里,然后以已知用户的身份返回 UI。我并不担心我去哪里获取产品服务令牌,尽管我认为如果可能的话去 Azure 是有意义的,因为最终我们希望每个人都朝着我怀疑的方向发展。

因此,我将上面的一些代码包装在一个 ExtJS 类中,并设法检索了一个有效的授权令牌。到目前为止,一切都很好。然后,当我尝试请求访问令牌时,我遇到了与该问题的发布者所做的 CORS 相同的问题。我现在只是看不到任何人如何将授权代码与 PKCE 流与 Azure 一起使用,因为您的应用程序肯定永远不会托管在用于登录的同一个域上?!

反正。我想知道我的选择。我现在想知道是否可以将传递回 UI(可能带有 PKCE 代码)的授权代码发布到 Web 服务,并让 Web 服务处理与 Azure 的通信以获取访问令牌。这是否有更大的成功机会,还是我会在那里遇到同样的问题?

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

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

努力寻找前进的方向!将不胜感激您可能拥有的任何见解。

干杯,韦斯蒂

4

1 回答 1

1

好的,经过几天对 Azure 实施的愚蠢性的抨击后,我偶然发现了一些隐藏的信息:https ://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib /msal-浏览器#prerequisites

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

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

于 2020-04-08T16:52:09.070 回答