因此,这与此处的问题有关: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 吗?
努力寻找前进的方向!将不胜感激您可能拥有的任何见解。
干杯,韦斯蒂