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