Получить адрес электронной почты (имя пользователя) в заявке Azure AdB2C, зарегистрированной в AzureAd, как социальная учетная запись - PullRequest
1 голос
/ 18 марта 2019

Я использую стартовый пакет пользовательских политик с пакетом SocialAndLocalAccounts для входа в учетную запись Azure Active Directory.

Я настроил потоки с настраиваемыми атрибутами, и он хорошо работает для меня.Мне нужно получить адрес электронной почты, используемый для входа в систему (имя пользователя = адрес электронной почты).

В RelyingParty у меня есть это OutputClaims

<OutputClaim ClaimTypeReferenceId = "signInName" />
<OutputClaim ClaimTypeReferenceId = "signInNames.emailAddress" PartnerClaimType = "email" />
<OutputClaim ClaimTypeReferenceId = "otherMails" />

Когда пользователь входит в систему с локальной учетной записью b2c, яполучите электронное письмо в заявках «signInName» и «email», но когда пользователь входит в систему с учетной записью AzureAd, заявки остаются пустыми.

Как я могу получить электронное письмо?Как мне написать собственные политики (TrustFrameworkBase и TFExtensions)?

Можете ли вы мне помочь?

1 Ответ

1 голос
/ 19 марта 2019

При первом входе в учетную запись Azure AD необходимо сопоставить заявку upn , выданную Azure AD, с заявкой email , которая используется Azure AD B2C, чтобы эта электронная почта претензия могла быть:

  1. Записывается как свойство otherMails в пользователь объекте в каталог Azure AD B2C.
  2. Выдано Azure AD B2C в токене идентификатора клиентскому приложению.

Чтобы сопоставить утверждение upn , выданное Azure AD, с утверждением email , которое используется Azure AD B2C, добавьте новый <OutputClaim /> для проверки подлинности Azure AD. технический профиль:

<ClaimsProvider>
  <Domain>commonaad</Domain>
  <DisplayName>Common AAD</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Common-AAD">
      <DisplayName>Multi-Tenant AAD</DisplayName>
      <Protocol Name="OpenIdConnect" />
      ...
      <OutputClaims>
        ...
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="upn" />
      </OutputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Технический профиль AAD-UserWriteUsingAlternativeSecurityId преобразует утверждение email в утверждение otherMails , вызывая CreateOtherMailsFromEmail утверждает преобразование , а затем сохраняет otherMails утверждение для пользователя объекта.

Чтобы отправить заявку по электронной почте в идентификаторе токена на ваше клиентское приложение, добавьте новый <OutputClaim /> в технический профиль проверяющей стороны:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    ...
    <OutputClaims>
      ...
      <OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails" />
    </OutputClaims>
    ...
  </TechnicalProfile>
</RelyingParty>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...