2016-02-24 3 views
2

В предварительном просмотре для Azure AD B2C вы можете определить приложения. Затем каждому приложению присваивается имя, идентификатор клиента, ключ приложения и несколько параметров для определения того, следует ли включать веб-приложение/веб-api и разрешать ли им неявный поток. В «старом» мире Azure AD у вас был гораздо больший контроль над взаимодействием между приложениями, такими как «это приложение может получить доступ к графику api» или «это приложение может говорить с этой услугой», тогда как в новом мировом порядке это не " t возможно (по крайней мере, с точки зрения портального интерфейса). Мой вопрос: учитывая отсутствие явного контроля в Azure AD B2C для инфраструктуры с растущим числом микросервисов, имеет ли смысл создавать «приложение» для каждой службы в Azure AD B2C (и даже в среде)? Или должна ли общая система использовать одно и то же приложение (и, следовательно, идентификатор клиента?).Сколько приложений должно быть определено в Azure B2C для инфраструктуры на базе микросервиса?

ответ

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