Пользовательская претензия Azure B2C возвращается только при использовании экрана входа - PullRequest
0 голосов
/ 07 октября 2019

Для проекта у меня есть настройка Azure B2C. При входе через экран входа в систему, как, например, с помощью приведенного ниже URL-адреса, я получаю обратно пользовательское требование под названием «myID».

URL-адрес с именем входа: https://login.microsoftonline.com/myapp.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_MyApp_SignIn&client_id=aaaa-bbbb-cccc-dddd-eeee&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms%2F&scope=openid&response_type=id_token&prompt=login

Пользовательская политика B2C, которую я использую, вызывает REST API, который возвращает утверждение «myID». Это все работает нормально.

Однако, если после входа я попытаюсь снова получить токен B2C с помощью вызова, подобного этому: https://login.microsoftonline.com/myapp.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_MyApp_signin&redirect_uri=https%3A%2F%2Fjwt.ms%2F&response_type=id_token&client_id=aaaa-bbbb-cccc-dddd-eeee&state=CUSTOMQSEGFu8EIzjB-yOqiSlue5Khsvns0ohQmy_state&nonce=sGQAXiotX9mpdJJ56ppkU5-9FXP4DBle&scope=openid

Я не вижу пользовательскую заявку "myID "больше.

Я подозреваю, что это потому, что второй вызов, который не показывает экран входа в систему, не вызывает REST API для получения пользовательского утверждения. Однако мне действительно нужно заказное требование.

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

Фрагмент из политики входа в систему:

<RelyingParty>
    <DefaultUserJourney ReferenceId="SignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
        <OutputClaim ClaimTypeReferenceId="myID" />
        <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
</RelyingParty>

Фрагмент из файла расширений платформы:

<TechnicalProfile Id="REST-API-SignIn">
          <DisplayName>Validate user's input data and return loyaltyNumber claim</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="ServiceUrl">https://myApp.azurewebsites.net/api/Claims/SignIn</Item>
            <Item Key="AllowInsecureAuthInProduction">true</Item>
            <Item Key="AuthenticationType">None</Item>
            <Item Key="SendClaimsIn">Body</Item>
          </Metadata>
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="signInName" />
          </InputClaims>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="myID" PartnerClaimType="myID" />
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Фрагмент поездки пользователя из файла TrustFrameworkBase:

<UserJourney Id="SignIn">
      <OrchestrationSteps>
        <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
          <ClaimsProviderSelections>
            <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
          </ClaimsProviderSelections>
          <ClaimsExchanges>
            <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <!-- This step reads any user attributes that we may not have received when in the token. -->
        <OrchestrationStep Order="2" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
      </OrchestrationSteps>
      <ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
...