Теперь вы получите приложение B2C client_id в качестве претензии в пакете претензий, чтобы вы могли делать с ним все, что хотите

т, пользовательская политика вызывается с идентификатором клиента приложения B2C

https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?p=B2C_1A_POLICY&client_id=THE-CLIENT-ID-I-WANT

Как я могу получить доступ к этому в политике, я думал, что это будет жестко закодировано в заявке client_id, но я не думаю, что это

Он возвращается только по умолчанию в качестве утверждения aud, но опять же я не вижу этого в пользовательской политике

Спасибо

 user119756327 сент. 2017 г., 16:27
эй, похоже, вы можете использовать {OIDC: ClientId}, чтобы перехватить заявку во входную заявку, нужно исследовать больше, если я могу сохранить эту заявку Кто-нибудь знает другие {существующие переменные} или где я могу найти полный список

Ответы на вопрос(1)

Решение Вопроса

это немного обойти, но я попытался с стандартным техническим профилем UserJourneyContextProvider, и это не сработало

поэтому, чтобы получить идентификатор клиента в качестве претензии, я сделал следующее

Создать шаг оркестровки

<OrchestrationStep Order="2" Type="ClaimsExchange">
  <ClaimsExchanges>
   <ClaimsExchange 
       Id="ClientIdFromOIDC-JC" 
       TechnicalProfileReferenceId="Get-ClientID-FromOIDC"/>
   </ClaimsExchanges>
  </OrchestrationStep>     

Затем создайте технический профиль RESTFUL, который будет вызывать приложение-функцию, передавая OIDC с {OIDC: ClientID}

<TechnicalProfile Id="Get-ClientID-FromOIDC">
    <DisplayName>Get-ClientID-FromOIDC</DisplayName>
    <Protocol Name="Proprietary" 
    Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, 
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
     <Item Key="AuthenticationType">None</Item>
     <Item Key="ServiceUrl">--FUNCTION APP URL--</Item>
     <Item Key="SendClaimsIn">QueryString</Item>
    </Metadata>
    <InputClaims>
      <InputClaim 
        ClaimTypeReferenceId="client_id" 
        PartnerClaimType="client_id"  
        DefaultValue="{OIDC:ClientId}" />
     </InputClaims>
     <OutputClaims>
       <OutputClaim ClaimTypeReferenceId="client_id" />
      </OutputClaims>
  </TechnicalProfile>

И, наконец, создайте приложение-функцию, которое принимает идентификатор клиента из строки запроса и возвращает его в правильном формате, чтобы B2C идентифицировал

используя System.Net; использование System.Net.Http.Formatting;

  public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, 
  TraceWriter log)
  {
       log.Info("C# HTTP trigger function processed a request.");
      // parse query parameter
      string client_id = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "client_id", true) == 0)
        .Value;

      return req.CreateResponse<ResponseContent>(
      HttpStatusCode.OK, new ResponseContent
      {
          version = "1.0.0",
          status = (int) HttpStatusCode.OK,
          client_id = client_id
      },
      new JsonMediaTypeFormatter(), "application/json");

   }

   class ResponseContent {
     public string version;
     public int status;
     public string client_id;
 }

Теперь вы получите приложение B2C client_id в качестве претензии в пакете претензий, чтобы вы могли делать с ним все, что хотите

Ваш ответ на вопрос