【问题标题】:How many applications should be defined in Azure B2C for a micro-service based infrastructure?应该在 Azure B2C 中为基于微服务的基础结构定义多少个应用程序?
【发布时间】:2016-06-06 13:39:54
【问题描述】:
在 Azure AD B2C 预览版中,您可以定义应用程序。然后为每个应用程序指定一个名称、一个客户端 ID、应用程序密钥和一些设置,以定义是否包含 Web 应用程序/Web api 以及是否允许隐式流。在 Azure AD 的“旧”世界中,您可以更好地控制应用程序之间的交互,例如“此应用程序可以访问图形 api”或“此应用程序可以与此服务对话”,而在新世界秩序中,这不会t 似乎是可能的(至少从门户 UI 的角度来看)。我的问题是:鉴于 Azure AD B2C 对具有越来越多微服务的基础设施缺乏明显的控制,在 Azure AD B2C(实际上是每个环境)中为每个服务创建一个“应用程序”是否有意义?或者整个系统应该共享同一个应用程序(因此是客户端 ID?)。
【问题讨论】:
标签:
c#
azure
web-applications
azure-ad-b2c
【解决方案1】:
(我想对此发表评论,但我目前的分数不允许我这样做)
我们的工作:我们为每个 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)))
});
}