Oauth 2.0 通过Azure AD和MSAL.js使用第三方身份提供程序
我用Angular创建了一个单页应用程序,身份验证/授权由Azure AD管理。我使用MSAL.js启动隐式流 一切正常,但现在我的客户希望使用自己的身份提供商(IDP),这样用户就可以对所有应用程序(包括我的应用程序)拥有一个单一的入口点。该IDP不是主流,它是由客户内部构建的 我想继续使用Azure AD管理授权(组、角色…)。我还希望我的应用程序及其专用后端API在Azure AD中注册,而不是在第三方IDP中注册。 Azure AD应继续负责向SPA提供访问令牌,以便调用API 不知何故,我应该将用户重定向到第三方IDP登录表单,成功登录后,它将重定向到我的SPA,然后SPA将令牌ID与AzureAD帐户关联并检索访问令牌(我想我必须在Azure AD中为第三方提供商中标识的用户创建一个帐户) 然而,我很难弄清楚如何做到这一点,如果有可能的话Oauth 2.0 通过Azure AD和MSAL.js使用第三方身份提供程序,oauth-2.0,azure-active-directory,openid-connect,azure-ad-b2c,msal.js,Oauth 2.0,Azure Active Directory,Openid Connect,Azure Ad B2c,Msal.js,我用Angular创建了一个单页应用程序,身份验证/授权由Azure AD管理。我使用MSAL.js启动隐式流 一切正常,但现在我的客户希望使用自己的身份提供商(IDP),这样用户就可以对所有应用程序(包括我的应用程序)拥有一个单一的入口点。该IDP不是主流,它是由客户内部构建的 我想继续使用Azure AD管理授权(组、角色…)。我还希望我的应用程序及其专用后端API在Azure AD中注册,而不是在第三方IDP中注册。 Azure AD应继续负责向SPA提供访问令牌,以便调用API 不知何故
对于这种情况,推荐的方法是什么?我还可以使用MSAL.js吗,还是必须依赖其他东西 架构 您的目标是完全正确的,您不需要更改一行代码来集成新的IDP,因此您可以继续使用MSAL.js 先决条件 为了将他们自己的IDP集成到您的系统中,您需要坚持某些先决条件:
- 客户需要提供符合标准的身份提供者
- 通常,IDP需要通过开放Id连接消息或SAML2P消息与授权服务器(Azure AD)通信
- 您的UI将重定向到您的AS
- 当触发时,AS将重定向到IDP
- 用户将在IDP中进行身份验证
- IDP将向您的AS发布令牌以识别用户
- AS将向您的UI发出另一个令牌
- IDP的实体id
- IDP令牌的令牌签名公钥,以便AS可以验证它们
- 要重定向到的URL
- AS的实体id
- 将令牌发布到的URL
您可以使用Windows Server和ADFS模拟客户端连接,然后将其集成为SAML2P连接。不过,这是一个学习曲线,您需要ADFS证书等基础设施。首先,非常感谢您提供了这一长而详细的答案。我必须处理所有这些信息,就像你说的,我必须通读文档。我只想澄清一件事。我对你的最后一段有点困惑,当你提到学习曲线——对基础设施和证书的需求时,这只是在我尝试使用ADF模拟客户端连接时,对吗?如果我将azure AD连接到我的客户端IDP,我不需要这些,对吗?