Azure B2C中应该为基于微服务的基础架构定义多少个应用程序?

时间:2016-02-24 10:15:59

标签: c# azure web-applications azure-ad-b2c

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

1 个答案:

答案 0 :(得分:0)

(我想评论一下,但我目前的分数不允许我这样做)

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

    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)))
        });
    }