2

在 Azure AD B2C 的预览版中,您可以定义应用程序。然后为每个应用程序指定一个名称、一个客户端 ID、应用程序密钥和一些设置,以定义是否包含 Web 应用程序/Web api 以及是否允许隐式流。在 Azure AD 的“旧”世界中,您可以更好地控制应用程序之间的交互,例如“此应用程序可以访问图形 api”或“此应用程序可以与此服务对话”,而在新世界秩序中,这不会t 似乎是可能的(至少从门户 UI 的角度来看)。我的问题是:鉴于 Azure AD B2C 对具有越来越多微服务的基础设施缺乏明显的控制,创建“应用程序”是否有意义 Azure AD B2C 中的每个服务(实际上是每个环境)?或者整个系统是否应该共享相同的应用程序(因此是客户端 ID?)。

4

1 回答 1

0

(我想对此发表评论,但我目前的分数不允许我这样做)

我们做什么:我们为每个 Web 和 API 应用程序(微服务容器)提供客户端 ID。在初始化 API 应用程序的身份验证时,我们将所有允许与 API 对话的客户端 ID 放在ValidAudiences

    public static string clientIds = ConfigurationManager.AppSettings["ValidClientIds"];

    public void ConfigureAuth(IAppBuilder app)
    {
        TokenValidationParameters tvps = new TokenValidationParameters
        {
            // This is where you specify that your API accepts tokens only from its own clients
            ValidAudiences = clientIds.Split(',')
        };

        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
        {
            // This SecurityTokenProvider fetches the Azure AD B2C metadata and signing keys from the OpenID Connect metadata endpoint
            AccessTokenFormat = new JwtFormat(tvps, new OpenIdConnectCachingSecurityTokenProvider(String.Format(aadInstance, tenant, Globals.ODICEndpointVersion, Globals.OIDCMetadataSuffix, commonPolicy)))
        });
    }
于 2016-07-23T05:23:40.420 回答