【问题标题】:Proper way to set up Azure B2C?设置 Azure B2C 的正确方法?
【发布时间】:2018-09-18 19:25:49
【问题描述】:

所以我一直在尝试围绕许多不同的事情来尝试使用我的项目设置 Azure 的 B2C。我的问题是:建立 B2C 究竟需要什么?

我的项目使用 Angular 5 和 .Net Core。

我一直在阅读有关 ADAL、MSAL、Microsoft Graph API、Azure AD Graph API、自定义 B2C 策略...

我是否正确理解 MSAL 是我用来授权使用 Graph API 的?然后我使用 Microsoft Graph API 登录、创建帐户等?根据我的研究,似乎 ADAL 正在被逐步淘汰。Azure AD 实际上是与 Azure B2C 不同的服务。

我不认识的人,帮帮我。

【问题讨论】:

  • 我对此也很感兴趣,尤其是与 Microsoft BotFramework 的集成。我已经 2 个月没有运气了。

标签: angular azure .net-core azure-ad-b2c msal


【解决方案1】:

GitHub 中的这个示例似乎在自述文件中记录了必要的步骤:https://github.com/Azure-Samples/active-directory-b2c-javascript-angular2.4-spa

Angular 版本不同,但对于 Azure 部分是有效的。它还包含指向有关 Azure 设置的相关文档的链接。我没有玩过这个特定的样本,但我希望它可以帮助你前进。

【讨论】:

  • 所以这使用 MSAL 登录到 Azure B2C。要使用 Azure B2C,我是否只需要 MSAL?
  • 没错,除了 Azure B2C 设置,这就是你所需要的。
【解决方案2】:

我有两个 Angular 6 应用程序在使用 Azure AD B2C 的生产环境中运行。

当我开始第一个项目时,它是 Angular 2(我也为这些项目进行操作,因此它们是最新的)感觉 MSAL 还不够远,我找不到 NPM为它打包。所以我决定使用 Manfred Steyer 的开源 angular-oauth2-oidc 组件,我不后悔。该组件已通过 OpenID Connect 认证且易于使用(Azure AD B2C 除外 ?)。

为了将组件与 Azure AD B2C 一起使用,您必须提供一个配置,其中包含一些您可以从发现文档中获取的值(例如, https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_sign_in)。这是我的配置的样子:

export const aadB2cNoDiscoveryConfig: AuthConfig = {
  'clientId': '<GUID>',
  'redirectUri': window.location.origin,
  'loginUrl': 'https://login.microsoftonline.com/<TENANT>.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1_signin',
  'logoutUrl': 'https://login.microsoftonline.com/<TENANT>.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1_signin',
  'scope': 'openid https://<TENANT>.onmicrosoft.com/<TENANT>.api/user_impersonation',
  'oidc': true,
  'issuer': 'https://login.microsoftonline.com/<GUID>/v2.0/',
  'tokenEndpoint': 'https://login.microsoftonline.com/<TENANT>.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_signin',
  'responseType': 'id_token token',
  'clearHashAfterLogin': true,
  'disableAtHashCheck': true,
  'showDebugInformation': true,
  'strictDiscoveryDocumentValidation': false,
  'jwks': {
    'keys': [
      {
        kid: "X5eX....",
        nbf: 14....,
        use: "sig",
        kty: "RSA",
        e: "AQAB",
        n: "tV......"
      }]
  }
}

为了登录,我在 app.component 的构造函数中调用了类似的东西:

this.oauthService.configure(aadB2cNoDiscoveryConfig);
this.oauthService.tokenValidationHandler = new JwksValidationHandler();
this.oauthService.tryLogin()

如果我必须使用 Azure AD B2C 实现另一个 Web 应用程序,我会考虑再次尝试 MSAL,但会毫不犹豫地回退到 angular-oauth2-oidc。


注意:如果您使用 .NET Core 中间件来为 Angular SPA 提供服务,您可以简单地添加一个 OpenID Connect 中间件。 这是一个good starting point

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多