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