代码之家  ›  专栏  ›  技术社区  ›  Ryan

我的Azure AD B2C受保护的API服务器应该期望哪个策略(用户流)作为权限?

  •  1
  • Ryan  · 技术社区  · 6 年前

    这是我第一次在我的任何项目中使用Azure AD B2C作为用户身份验证后端。我对这些概念是全新的,我正在努力拼凑我对它们的理解。

    resource owner password credentials flow 获取我的B2C代币。

    我的困惑在于我的后端API服务器和它自己对用户提供的B2C承载令牌的验证。

    我的web应用程序是基于浏览器的React应用程序,它可以简单地使用相同的登录策略用户流,并向API服务器提供访问令牌,因为两者都使用与颁发者/机构相同的策略,所以一切都可以正常工作。

    我如何协调所有这些政策?我认为我的各种“客户端应用程序”应该可以通过对它们有意义的策略(用户流)自由生成令牌,这是正确的吗?但是,既然我的API服务器需要使用一个策略,那么它应该使用哪个策略作为授权?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Chris Padgett    6 年前

    同一租户中所有策略的颁发者URL应相同。

    https://{tenant-name}.b2clogin.com/{tenant-id}/v2.0/

    https://fabrikamb2c.b2clogin.com/775527ff-9a37-4307-8b3d-cc311f58d925/v2.0/

    这意味着您可以使用API服务器配置任何权限,它应该验证为任何策略颁发的令牌。

        2
  •  1
  •   Jean-Marc Prieur    6 年前

    @Ryan,您的ASP.NET Core 2.1 Web API可以决定如何使用TokenValidationParameters验证令牌。例如,我没有检查B2C特定案例,但我怀疑差异将来自发行人。

    Startup.cs line 61

    options.TokenValidationParameters.IssuerValidator = AadIssuerValidator.ValidateAadIssuer;
    

    然后可以在中找到AadIssuerValidator.ValidateAadIssuer方法 AadIssuerValidator.cs

    如果令牌来自Azure AD(v1.0或v2.0端点),则此令牌不接受任何AAD组织。我想你可以把它适应B2C的情况,接受你的主机(something.b2clogin.com?)?

    您还可以在中找到更多信息 TokenValidation