Azure Active Directory B2 C войти в систему пользователя с указанным адресом электронной почты - PullRequest
0 голосов
/ 11 марта 2020

Я использую следующий код для первого входа пользователя с помощью AAD B2 C с использованием Microsoft IDP.

var localAccounts = (List<IAccount>) await AADB2C.PublicClientApp.GetAccountsAsync();

var authResult = await AADB2C.PublicClientApp.AcquireTokenInteractive(AADB2C.ApiScopes)
    //.WithAccount(GetAccountByPolicy(localAccounts, AADB2C.PolicySignUpSignIn))
    //.WithPrompt(Prompt.SelectAccount)
    .WithLoginHint(WindowsUser.Email)
    //.WithExtraQueryParameters("login_hint=" + WindowsUser.Email)
    .ExecuteAsync();

Я пытаюсь указать адрес электронной почты для входа, поэтому, когда Пользовательский логин в адресе электронной почты должен быть заполнен как минимум. (Или сделать это только для чтения будет еще лучше). Для этого я использую расширение .WithLoginHint, но оно не работает.

enter image description here

У вас есть какие-либо предложения, как я могу решить это?

1 Ответ

0 голосов
/ 11 марта 2020

AAD B2 C будет отправлен параметр login_hint в запросе авторизации на основе вашего кода. Для подтверждения используйте трассировку сети в браузере Chrome. Поскольку настроен только один IDP, AAD B2 C перенаправляет пользователя на учетную запись Microsoft.

AAD B2 C не будет проходить через параметр login_hint в интегрированный IdP при использовании встроенных пользовательских потоков, поэтому вы наблюдаете, что он "не работает".

Если вы создаете это с помощью пользовательских политик, следуйте this и this и добавьте следующее к OID C ClaimsProvider вашей учетной записи MS, B2 C будет проходить через login_hint с использованием распознавателя заявок .

<InputClaim ClaimTypeReferenceId="prompt" DefaultValue="{OIDC:LoginHint}" />

Вам также необходимо определить претензию prompt следующим образом:

      <ClaimType Id="prompt">
        <DisplayName>oidc prompt param</DisplayName>
        <DataType>string</DataType>
        <UserHelpText/>
      </ClaimType>
...