Поток учетных данных пароля владельца ресурса Access_denied в Azure AD B2C - PullRequest
0 голосов
/ 02 февраля 2019

Я следовал этой статье ниже, но я получил ошибку ниже из раздела Проверка потока пользователя:

https://docs.microsoft.com/en-gb/azure/active-directory-b2c/configure-ropc

HTTP/1.1 400 Bad Request
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
x-ms-gateway-requestid: fd437d7a-fd0e-42bf-adcf-0969f5dcf74d
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Set-Cookie: x-ms-cpim-trans=; domain=mytenant.b2clogin.com; expires=Tue, 29-Jan-2019 13:35:09 GMT; path=/; secure; HttpOnly
Date: Wed, 30 Jan 2019 13:35:08 GMT
Content-Length: 217

{"error":"access_denied","error_description":"AADB2C90225: The username or password provided in the request are invalid.\r\nCorrelation ID: 9b3c19e2-6084-4bcd-b7d3-aab8d2c34dd9\r\nTimestamp: 2019-01-30 13:35:09Z\r\n"}

Запрос отправлен:

POST https://mytenant.b2clogin.com/mytenant.onmicrosoft.com/oauth2/v2.0/token?p=B2C_1_ROPC_Auth HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: mytenant.b2clogin.com

username=myemail&password=password&grant_type=password&scope=openid myappId offline_access&client_id=myappId&response_type=token+id_token

Я являюсь глобальным администратором, но могу создавать пользовательский поток, регистрировать приложение и т. Д.

Я использую Fiddler для отправки запроса, поэтому он не связан с WebApp / WebAPI.

Имя пользователя (например, myname@myfirm.com) и пароль верны, что используется для входа на портал Azure для настройки образца.

Есть идеи?

Обновить

Обратите внимание, что используемый мной пользователь находится в роли пользователя в активном каталоге моей фирмы, но пользователь является глобальным администратором в активном каталоге, связанном с вновь созданным клиентом AD B2C, следующим * 1023.*

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

В основном, если вы следуете документации здесь .Вы получите это сообщение об ошибке, потому что инструкция на шаге 4 неверна.

В вашем файле TrustFrameworkExtensions.у вас должно быть что-то подобное в вашей локальной учетной записи. Вход ClaimsProvider -> TechnicalProfiles

    <TechnicalProfile Id="ResourceOwnerPasswordCredentials-OAUTH2">
      <DisplayName>Local Account SignIn</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <Metadata>
        <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">We can't seem to find your account</Item>
        <Item Key="UserMessageIfInvalidPassword">Your password is incorrect</Item>
        <Item Key="UserMessageIfOldPasswordUsed">Looks like you used an old password</Item>
        <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
        <Item Key="ValidTokenIssuerPrefixes">https://sts.windows.net/</Item>
        <Item Key="METADATA">https://login.microsoftonline.com/{AzureADB2C-Tenant-Name}.onmicrosoft.com/.well-known/openid-configuration</Item>
        <Item Key="authorization_endpoint">https://login.microsoftonline.com/{AzureADB2C-Tenant-Name}.onmicrosoft.com/oauth2/token</Item>
        <Item Key="response_types">id_token</Item>
        <Item Key="response_mode">query</Item>
        <Item Key="scope">email openid</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="logonIdentifier" PartnerClaimType="username" Required="true" DefaultValue="{OIDC:Username}"/>
        <InputClaim ClaimTypeReferenceId="password" Required="true" DefaultValue="{OIDC:Password}" />
        <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="password" />
        <InputClaim ClaimTypeReferenceId="scope" DefaultValue="openid" />
        <InputClaim ClaimTypeReferenceId="nca" PartnerClaimType="nca" DefaultValue="1" />
        <InputClaim ClaimTypeReferenceId="client_id" DefaultValue="{Proxy-Identity-Experience-Framework-ClientId}" />
        <InputClaim ClaimTypeReferenceId="resource_id" PartnerClaimType="resource" DefaultValue="{Identity-Experience-Framework-ClientId}" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid" />
        <OutputClaim ClaimTypeReferenceId="userPrincipalName" PartnerClaimType="upn" />
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromObjectID" />
      </OutputClaimsTransformations>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>

Обратите внимание, что идентификатор_ресурса должен быть IdentityExperienceFramework ID (клиента), а не ProxyIdentityExperienceFramework , как описано в документации Microsoft.Я отправил запрос на исправление в GitHub.

0 голосов
/ 04 февраля 2019

Поток учетных данных пароля владельца ресурса, который описывается Настройка потока учетных данных пароля владельца ресурса в статье Azure AD B2C , не предназначен для проверки подлинности учетных данных пользователя администратора.

Он предназначен для проверки подлинности учетных данных для конечного пользователя, который (а) был создан как локальная учетная запись с помощью API-интерфейса Azure AD Graph или (b) зарегистрировался с помощью потока регистрации.

...