gpt4 book ai didi

javascript - 使用 ADAL JS 进行身份验证未按预期运行

转载 作者:行者123 更新时间:2023-11-28 06:12:15 25 4
gpt4 key购买 nike

我在同一目录中有两个 Azure AD 应用程序,我们将它们称为 FrontendAuthBackendAuth,它们为 ASP.NET MVC 前端和 Web API 后端提供身份验证, 分别。 MVC 前端使用标准 UseOpenIdConnectAuthentication 配置进行保护,Web API 后端使用 UseWindowsAzureActiveDirectoryBearerAuthentication 进行保护。

我想要做的是登录前端,根据 FrontendAuth 进行身份验证,然后通过 JavaScript 使用后端托管的 API,提供使用 ADAL JS 获取的 token >,到BackendAuth

假设

我的期望/假设是:

  • 我必须配置 FrontendAuth 才能访问经典门户中的 BackendAuth
  • 我必须编辑其中一个或两个的 list 文件,才能将 oauth2AllowImplicitFlow 设置为 true
  • 当我配置 ADAL JS 时,我应该将 clientId 设置为 FrontendAuth
  • ADAL JS 配置的 endpoints 对象应包含后端 API 的 Url 和 BackendAuth 的客户端 ID

结果

我可以通过 ADAL JS 实现登录前端并与后端服务通信的目标:

  • FrontendAuth 应用程序根本无法访问 BackendAuth
  • list 文件的 oauth2AllowImplicitFlow 属性均未设置为 true
  • ADAL JSclientId 设置为 BackendAuth
  • ADAL JS 配置的端点对象根本未设置

问题

根据这些发现,我想了解以下内容:

  • 我的假设正确吗?这就是 ADAL JS 的工作原理吗?
  • 为什么缺乏应用程序访问权限和未更改的 list 文件对身份验证是否成功没有影响?
  • 这些措施何时会对身份验证结果产生影响?

最佳答案

您在这里混淆了两个 OAuth2 流( authorization code flowimplicit flow )。两者都是为了向客户端应用程序颁发 token 。身份验证代码流用于在服务器上运行的 Web 应用程序(例如 MVC 应用程序),隐式流适用于 SPA 等公共(public)客户端。

当您使用OpenID Connect时要使用混合流程让用户登录到 MVC 应用程序,您会从浏览器收到授权代码。您使用此代码与授权服务器通信并获取 JWT token ,然后将其存储在 cookie session 中。只要您授予 FrontendAuth 应用调用 BackendAuth 应用的权限,您就可以使用相同的代码为您的 BackendAuth 应用获取 JWT token 。

如果您想要启用用户浏览器中的 JavaScript 来调用 BackendAuth 应用程序,您需要以某种方式将访问 token 传递到浏览器。您可以通过将 token 与初始请求一起发送并将其放入本地存储或公开(安全的)MVC 路由来获取 token 来完成此操作。

有关我在此描述的示例,请参阅 this Azure AD sample ,它使用收到的授权代码获取 Graph API 的 token 。

ADAL.js 实现隐式流程,适用于 SPA 等 JavaScript 应用程序。

关于javascript - 使用 ADAL JS 进行身份验证未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com