Azure Active Directory B2 C Интеграция SAML - PullRequest
0 голосов
/ 11 января 2020

Я следую официальному руководству MS Настройте вход в систему с поставщиком SAML Salesforce с помощью пользовательских политик в Azure Active Directory B2 C. Я выполнил все настройки, но при попытке запустить приложение я получаю странную ошибку, в которой говорится, что Заявка с идентификатором "userId" уже существует в коллекции заявок . Я искал userId в моих пользовательских политиках:

TrustFrameworkBase. xml: в этом файле ИД пользователя НЕ объявлен, претензия с именем IssueUserId объявляется в ClaimsSchema как строка типа данных и используется в следующем преобразовании утверждений:

<ClaimsTransformation Id="CreateAlternativeSecurityId" TransformationMethod="CreateAlternativeSecurityId">
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="issuerUserId" TransformationClaimType="key" />
          <InputClaim ClaimTypeReferenceId="identityProvider" TransformationClaimType="identityProvider" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="alternativeSecurityId" TransformationClaimType="alternativeSecurityId" />
        </OutputClaims>
      </ClaimsTransformation>

IssueUserId затем используется в поставщике утверждений Facebook:

<ClaimsProvider>
    <Domain>facebook.com</Domain>
    <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="id" />
...
    </OutputClaims>
...
</ClaimsProvider>

TrustFrameworkExtension. xml: претензия ИД пользователя - выходная претензия поставщика претензий, которого я использую (salesforce):

<ClaimsProvider>
      <Domain>salesforce</Domain>
...
      <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userid"/>
      </OutputClaims>
...
</ClaimsProvider>

SignUpOrSigninSalesforce. xml: заявка идентификатор пользователя - это выходная заявка проверяющей стороны, которую я использую (salesforce):

<RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpSignInSalesforce" />
    <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="issuerUserId" />
        ...
      </OutputClaims>
    </TechnicalProfile>
</RelyingParty>

На основании сообщения об ошибке идентификатор пользователя определяется дважды, но я не нахожу двойного определения, у вас есть какие-либо подсказки?

Спасибо.

Ответы [ 2 ]

1 голос
/ 15 января 2020

После 3 дней исчерпывающего поиска неисправностей я обнаружил пять минут go ошибки. В моем случае я не выполнил точно шаги Microsoft, я ошибочно изменил SignUpSignInSalesforce UserJourney на шаге оркестровки 3 в TrustFrameworkExtensions. xml:

<UserJourney Id="SignUpSignInSalesforce">
....
    <OrchestrationStep Order="3" Type="ClaimsExchange">
              <ClaimsExchanges>
                <ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="salesfoce" />
              </ClaimsExchanges>
            </OrchestrationStep>
...
</UserJourney>

неправильное значение TechnicalProfileReferenceId . Когда я изменил значение с salesforce на AAD-UserReadUsingAlternativeSecurityId-NoError , решение начало работать. То, что я сделал, это перечитал документацию Microsoft шаг за шагом в поисках ошибок.

0 голосов
/ 13 января 2020

Я мог бы найти настоящую ошибку:

Не найдено требование с идентификатором «IssueUserId», которое требуется для ClaimsTransformation «CreateAlternativeSecurityId» с идентификатором «CreateAlternativeSecurityId» в политике «B2C_1A_signup_signin» из tenant 'eonitatestb2 c .onmicrosoft.com. преобразуется в IssueUserIser в Техническом профиле:

<ClaimsProvider>
      <TechnicalProfiles>
        <TechnicalProfile Id="salesforce">
        ...
        <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userId" />
            ...
        </OutputClaims>
        </TechnicalProfile>
     </TechnicalProfiles>
</ClaimsProvider>

и используется в преобразовании утверждений CreateAlternativeSecurityId :

<ClaimsTransformation Id="CreateAlternativeSecurityId" TransformationMethod="CreateAlternativeSecurityId">
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="issuerUserId" TransformationClaimType="key" />
          <InputClaim ClaimTypeReferenceId="identityProvider" TransformationClaimType="identityProvider" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="alternativeSecurityId" TransformationClaimType="alternativeSecurityId" />
        </OutputClaims>
      </ClaimsTransformation>

Также в я обнаружил IssueUserId , а также alternativeSecurityId :

""Statebag"": {
        ""Complex-CLMS"": {
          ""issuerUserId"": ""0055J000000G1yf"",
          ""email"": ""michele.guglielmi84@gmail.com"",
          ""displayName"": ""mg84@eon-ita-test.com"",
          ""authenticationSource"": ""socialIdpAuthentication"",
          ""identityProvider"": ""SAMLIdp"",
          ""upnUserName"": ""4d205e30-788e-4b68-b2f7-a2653304c143"",
          ""userPrincipalName"": ""cpim_4d205e30-788e-4b68-b2f7-a2653304c143@eonitatestb2c.onmicrosoft.com"",
          ""alternativeSecurityId"": ""{\""type\"":6,\""identityProvider\"":\""SAMLIdp\"",\""key\"":\""MDA1...BHMXlm\""}"",
          ""sub"": ""Not supported currently. Use oid claim.""
        }

Я не знаю, почему ошибка все еще устранена, вы понимаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...