В предварительном просмотре для Azure AD B2C вы можете определить приложения. Затем каждому приложению присваивается имя, идентификатор клиента, ключ приложения и несколько параметров для определения того, следует ли включать веб-приложение/веб-api и разрешать ли им неявный поток. В «старом» мире Azure AD у вас был гораздо больший контроль над взаимодействием между приложениями, такими как «это приложение может получить доступ к графику api» или «это приложение может говорить с этой услугой», тогда как в новом мировом порядке это не " t возможно (по крайней мере, с точки зрения портального интерфейса). Мой вопрос: учитывая отсутствие явного контроля в Azure AD B2C для инфраструктуры с растущим числом микросервисов, имеет ли смысл создавать «приложение» для каждой службы в Azure AD B2C (и даже в среде)? Или должна ли общая система использовать одно и то же приложение (и, следовательно, идентификатор клиента?).Сколько приложений должно быть определено в Azure B2C для инфраструктуры на базе микросервиса?
2
A
ответ
0
(Я хотел бы прокомментировать это, но мой текущий счет не позволяет мне сделать это)
Что мы делаем: мы имеем клиента Идентификаторы для каждого Web и API App (контейнер для микро услуг). При инициализации аутентификации для API-приложений мы помещаем все идентификаторы клиентов, которым разрешено разговаривать с API в 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)))
});
}