Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".
Замечание
В Azure Active Directory B2C пользовательские политики преимущественно предназначены для выполнения сложных сценариев. В большинстве случаев рекомендуется использовать встроенные потоки пользователей. Ознакомьтесь со статьей Начало работы с настраиваемыми политиками в Azure Active Directory B2C, чтобы узнать о базовом пакете настраиваемых политик, если еще не сделали этого.
Azure Active Directory B2C (Azure AD B2C) обеспечивает поддержку поставщика удостоверений протокола OAuth2. OAuth2 — это основной протокол для авторизации и делегированной проверки подлинности. Дополнительные сведения см. в статье RFC 6749 Платформа авторизации OAuth 2.0. С помощью технического профиля OAuth2 вы можете интегрироваться с поставщиком удостоверений на основе OAuth2, например Facebook. Федерация с поставщиком удостоверений позволяет пользователям входить в систему, используя имеющиеся удостоверения социальных сетей или компаний.
Протокол
Атрибуту Name элемента Protocol необходимо присвоить значение OAuth2
. Например, протокол технического профиля Facebook-OAUTH:OAuth2
<TechnicalProfile Id="Facebook-OAUTH">
<DisplayName>Facebook</DisplayName>
<Protocol Name="OAuth2" />
...
Входящие утверждения
Элементы InputClaims и InputClaimsTransformations не являются обязательными. Но вам может потребоваться отправить дополнительные параметры поставщику удостоверений. В следующем примере к запросу авторизации добавляется параметр строки запроса domain_hint со значением contoso.com
.
<InputClaims>
<InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>
Исходящие утверждения
Элемент OutputClaims содержит список утверждений, возвращаемых поставщиком удостоверений OAuth2. Возможно, потребуется сопоставить имя утверждения, определенное в вашей политике, с именем, определенным у поставщика удостоверений. Кроме того, можно включить утверждения, которые не возвращаются поставщиком удостоверений, если вы задали DefaultValue
атрибут.
Элемент OutputClaimsTransformations может содержать коллекцию элементов OutputClaimsTransformation, которые используются для изменения исходящих утверждений или создания новых.
В следующем примере показаны утверждения, возвращаемые поставщиком удостоверений Facebook:
- Утверждение first_name сопоставлено с заданным именем.
- Утверждение last_name сопоставляется с утверждением фамилии .
- Утверждение displayName без сопоставления имен.
- Утверждение email без ассоциации с именами.
Технический профиль также возвращает утверждения, которые не возвращаются поставщиком удостоверений:
- Утверждение identityProvider , содержащее имя поставщика удостоверений.
- Утверждение authenticationSource со значением по умолчанию socialIdpAuthentication.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="id" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="facebook.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>
Метаданные конечной точки авторизации
Поток авторизации начинается, когда Azure AD B2C направляет пользователя к конечной точке поставщиков /authorize
удостоверений OAuth2. Вызов конечной точки авторизации — это интерактивная часть потока, где пользователь принимает меры. На этом этапе пользователю предлагается завершить вход в поставщик удостоверений OAuth2. Например, введите имя пользователя и пароль.
Azure AD B2C создает запрос авторизации, предоставляя идентификатор клиента, области, URI перенаправления и другие параметры, необходимые для получения маркера доступа от поставщика удостоверений. В этом разделе описаны метаданные конечной точки авторизации, которая позволяет настроить запрос на /authorize
конечную точку поставщика удостоверений.
Запрос к конечной точке авторизации всегда является HTTP GET. В следующем примере показан вызов конечной точки авторизации.
GET https://login.contoso.com/oauth/v2/authorization?
client_id=12345
&response_type=code
&response_mode=query
&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob
&scope=profile%20offline_access
&redirect_uri=https%3a%2f%2fabrikam.b2clogin.com%2fabrikam.onmicrosoft.com%2foauth2%2fauthresp
&state=...
В следующей таблице перечислены метаданные конечной точки авторизации.
Свойство | Обязательно | Описание |
---|---|---|
authorization_endpoint |
Да | URL-адрес конечной точки авторизации в формате RFC 6749. |
client_id |
Да | Идентификатор приложения поставщика идентификационных данных. |
AdditionalRequestQueryParameters |
нет | Дополнительные параметры запроса запроса. Например, может потребоваться отправить дополнительные параметры поставщику удостоверений. Можно включить несколько параметров с помощью разделителя запятых. |
response_mode |
нет | Метод, который использует поставщик удостоверений, чтобы отправить результат обратно в Azure AD B2C. Возможные значения: query , form_post (по умолчанию) или fragment . |
scope |
нет | Область запроса, определенного в соответствии со спецификацией поставщика удостоверений OAuth2. Возможные значения: openid , profile и email . |
UsePolicyInRedirectUri |
нет | Указывает, следует ли использовать политику при создании универсального кода ресурса (URI) перенаправления. При настройке приложения в поставщике удостоверений необходимо указать URI перенаправления. URI перенаправления указывает на Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp . Если вы указываете true , необходимо добавить URI перенаправления для каждой используемой политики. Например: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp . |
Метаданные конечной точки токена
После завершения проверки подлинности пользователя в конечной точке авторизации поставщика удостоверений возвращается ответ, содержащий авторизацию code
, в Azure AD B2C. Azure AD B2C активирует код авторизации для маркера доступа, отправив запрос POST в /token
конечную точку поставщика удостоверений. В этом разделе описаны метаданные конечной точки маркера, которые позволяют настроить запрос на /token
конечную точку поставщика удостоверений.
В следующем HTTP-запросе показан вызов Azure AD B2C к конечной точке маркера поставщика удостоверений.
POST https://contoso/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&client_id=12345&scope=profile offline_access&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
В следующей таблице перечислены метаданные конечной точки маркера.
Свойство | Обязательно | Описание |
---|---|---|
AccessTokenEndpoint |
Да | URL-адрес конечной точки маркера. Например: https://www.linkedin.com/oauth/v2/accessToken . |
HttpBinding |
нет | Ожидаемая привязка HTTP к конечной точке токена. Возможные значения: GET или POST . |
AccessTokenResponseFormat |
нет | Формат вызова конечной точки маркера доступа. Например, Для Facebook требуется метод HTTP GET, но ответ маркера доступа находится в формате JSON. Возможные значения: Default , Json и JsonP . |
ExtraParamsInAccessTokenEndpointResponse |
нет | Содержит дополнительные параметры, которые могут быть возвращены в ответе от AccessTokenEndpoint некоторыми поставщиками удостоверений. Например, ответ из AccessTokenEndpoint содержит дополнительный параметр, например openid , обязательный параметр, помимо access_token в строке запроса запроса ClaimsEndpoint . Несколько имен параметров должны быть экранированы и разделены запятыми "," разделителя. |
token_endpoint_auth_method |
нет | Указывает, как Azure AD B2C отправляет заголовок проверки подлинности в конечную точку маркера. Возможные значения: client_secret_post (по умолчанию) и client_secret_basic , private_key_jwt . Дополнительные сведения см. в документе о проверке подлинности клиента OpenID Connect. |
token_signing_algorithm |
нет | Указывает алгоритм подписания для использования, когда для параметра token_endpoint_auth_method задано значение private_key_jwt . Возможные значения: RS256 (по умолчанию) или RS512 . |
Настройка метода привязки HTTP
По умолчанию запрос к конечной точке маркера использует HTTP POST.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="HttpBinding">POST</Item>
Следующий HTTP-вызов демонстрирует вызов конечной точки токена с помощью HTTP-запроса POST:
POST /oauth2/token
client_id=abcd&client_secret=1234&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Для поставщиков удостоверений, требующих использования метода HTTP GET в конечной точке /token
, задайте HttpBinding
для метаданных значение GET
. Обратите внимание, что в следующем примере AccessTokenResponseFormat
задано значение json
, так как конечная точка маркера возвращает ответ в формате JSON.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="HttpBinding">GET</Item>
<Item Key="AccessTokenResponseFormat">json</Item>
GET /oauth2/token?client_id=abcd&client_secret=1234&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Настройка формата ответа маркера доступа
Для поставщиков удостоверений, поддерживающих метод HTTP POST, AccessTokenResponseFormat
по умолчанию json
устанавливается значение . Если поставщик удостоверений поддерживает HTTP-запрос GET, необходимо явно задать формат json
ответа маркера доступа.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="HttpBinding">GET</Item>
<Item Key="AccessTokenResponseFormat">json</Item>
В следующем примере показан ответ конечной точки токена в формате JSON:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...",
"token_type": "Bearer",
"not_before": 1637924390,
"expires_in": 960000,
}
Настройка метода проверки подлинности
Запросы к конечной точке токена всегда требуют проверки подлинности. По умолчанию Azure AD B2C предоставляет поставщику удостоверений учетные данные клиента. По умолчанию используется client_secret_post
метод проверки подлинности, включая учетные данные клиента (client_id
и client_secret
) в тексте запроса.
Следующий HTTP-запрос к конечной точке токена client_id
содержит и client_secret
в данных POST. Для запросов client_id
GET и client_secret
их включения в параметры строки запроса.
POST /oauth2/token
client_id=abcd&client_secret=1234&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Для поставщиков удостоверений, которым требуется использовать обычную проверку подлинности HTTP в конечной /token
точке, настройте метаданные token_endpoint_auth_method
client_secret_basic
в . С помощью этого типа метода проверки подлинности учетные данные клиента передаются поставщику удостоверений с помощью схемы проверки подлинности HTTP Basic.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="token_endpoint_auth_method">client_secret_basic</Item>
Следующий HTTP-запрос демонстрирует вызов конечной точки токена с помощью базовой проверки подлинности HTTP. Заголовок авторизации содержит идентификатор клиента и секрет клиента в формате client_ID:client_secret
base64.
POST /oauth2/token
Authorization: Basic YWJjZDoxMjM0
redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Для поставщиков удостоверений, поддерживающих проверку подлинности JWT с закрытым ключом, настройте метаданные token_endpoint_auth_method
в private_key_jwt
. С помощью этого типа метода проверки подлинности сертификат, предоставленный Azure AD B2C, используется для создания подписанного утверждения, который передается поставщику удостоверений через client_assertion
параметр. Задано client_assertion_type
urn:ietf:params:oauth:client-assertion-type:jwt-bearer
значение . Метаданные token_signing_algorithm
указывают алгоритм подписывания JWT.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="token_endpoint_auth_method">private_key_jwt</Item>
<Item Key="token_signing_algorithm">RS256</Item>
Следующий HTTP-запрос демонстрирует вызов конечной точки токена с помощью проверки подлинности JWT закрытого ключа.
POST /oauth2/token
client_assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImtpZCI6IjJFRFg0dWRYeDIxbXNoaXdJVzczMUY3OUZSbFJiUDZXVXJyZmktR1RFeVkifQ.eyJpc3MiOiJhYmNkIiwiZXhwIjoxNjM3OTI5ODY0LCJuYmYiOjE2Mzc5Mjk1NjQsImF1ZCI6Imh0dHBzOi8vNWRlNC0xMDktNjQtMTI0LTUzLm5ncm9rLmlvL2FjY2Vzc190b2tlbiIsImp0aSI6IjVxQWlGV2lEODNDbU1KWWNrejBRdGc9PSIsInN1YiI6ImFiY2QiLCJpYXQiOjE2Mzc5Mjk1NjR9.C4OtRnrLaQatpT5LP45O5Nb418S4v8yZi_C42ld440w&client_id=abcd&client_assertion_type=urn%3aietf%3aparams%3aoauth%3aclient-assertion-type%3ajwt-bearer&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Метаданные конечной точки сведений пользователя
После того как Azure AD B2C получает маркер доступа от поставщика удостоверений OAuth2, он вызывает конечную точку сведений пользователя. Конечная точка сведений о пользователе, также известная как конечная точка утверждений, предназначена для получения утверждений о прошедшем проверку подлинности пользователя. Azure AD B2C использует проверку подлинности маркера носителя для проверки подлинности в конечной точке сведений о пользователях поставщиков удостоверений. Маркер носителя — это маркер доступа, полученный Azure AD B2C из конечной точки поставщиков /token
удостоверений.
Запрос к конечной точке сведений пользователя всегда является HTTP GET. Маркер доступа отправляется в параметре строки запроса с именем access_token
. Следующий HTTP-запрос показывает вызов конечной точки сведений пользователя с маркером доступа в параметре строки запроса.
GET /oauth2/claims?access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
В следующей таблице перечислены метаданные конечной точки сведений пользователя.
Свойство | Обязательно | Описание |
---|---|---|
ClaimsEndpoint |
Да | URL-адрес конечной точки сведений пользователя. Например: https://api.linkedin.com/v2/me . |
ClaimsEndpointAccessTokenName |
нет | Имя параметра строки запроса маркера доступа. Значение по умолчанию: access_token . |
ClaimsEndpointFormatName |
нет | Имя параметра строки запроса формата. Например, можно задать имя как format в этой конечной точке https://api.linkedin.com/v1/people/~?format=json утверждений LinkedIn. |
ClaimsEndpointFormat |
нет | Значение параметра строки запроса формата. Например, можно задать значение в json этой конечной точке https://api.linkedin.com/v1/people/~?format=json утверждений LinkedIn. |
BearerTokenTransmissionMethod |
нет | Указывает способ отправки маркера. Метод по умолчанию — это строка запроса. Чтобы отправить маркер в качестве заголовка запроса, задайте для параметра . |
ExtraParamsInClaimsEndpointRequest |
нет | Содержит дополнительные параметры, которые могут быть возвращены в запросе ClaimsEndpoint некоторыми поставщиками удостоверений. Несколько имен параметров должны быть экранированы и разделены запятыми "," разделителя. |
Настройка параметра строки запроса маркера доступа
Конечная точка сведений пользователя может потребовать отправки маркера доступа в определенном параметре строки запроса. Чтобы изменить имя параметра строки запроса, содержащего маркер доступа, используйте метаданные ClaimsEndpointAccessTokenName
. В следующем примере для параметра строки запроса маркера доступа задано значение token
.
<Item Key="ClaimsEndpoint">https://contoso.com/oauth2/claims</Item>
<Item Key="ClaimsEndpointAccessTokenName">token</Item>
Следующий HTTP-вызов демонстрирует вызов конечной точки сведений пользователя с ClaimsEndpointAccessTokenName
заданным значением token
:
GET /oauth2/claims?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Настройка формата утверждений
ClaimsEndpointFormatName
И ClaimsEndpointFormat
позволяет отправлять параметр строки запроса пары "ключ-значение" в конечную точку сведений пользователя. В следующем примере настраивается параметр строки запроса с именем format
со значением json
.
<Item Key="ClaimsEndpoint">https://contoso.com/oauth2/claims</Item>
<Item Key="ClaimsEndpointFormatName">format</Item>
<Item Key="ClaimsEndpointFormat">json</Item>
Следующий HTTP-запрос демонстрирует вызов конечной точки сведений пользователя и ClaimsEndpointFormatName
ClaimsEndpointFormat
настроен.
GET /oauth2/claims?format=json&access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Настройка метода передачи маркеров носителя
По умолчанию маркер доступа отправляется в конечную точку сведений о пользователях поставщиков удостоверений через параметр строки запроса. Чтобы отправить маркер в заголовке HTTP Authorization
, задайте BearerTokenTransmissionMethod
для метаданных значение AuthorizationHeader
.
<Item Key="ClaimsEndpoint">https://contoso.com/oauth2/claims</Item>
<Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
Следующий HTTP-запрос демонстрирует, как передается маркер доступа, если BearerTokenTransmissionMethod
задано AuthorizationHeader
значение .
GET /oauth2/claims
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Передача параметров, возвращаемых конечной точкой маркера
Некоторые поставщики удостоверений требуют передачи дополнительных параметров, возвращаемых из конечной точки маркера в конечную точку сведений пользователя. Например, ответ от конечной точки токена содержит параметр с именем resource
, который является обязательным параметром конечной точки сведений пользователя (помимо маркера доступа). Используйте метаданные ExtraParamsInClaimsEndpointRequest
, чтобы указать все дополнительные параметры для передачи. Несколько имен параметров должны быть экранированы и разделены запятыми "," разделителя.
Следующий код JSON демонстрирует полезные данные JSON, возвращаемые конечной точкой маркера с именем resource
параметра.
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...",
"token_type": "Bearer",
"not_before": 1549647431,
"expires_in": 960000,
"resource": "f2a76e08-93f2-4350-833c-965c02483b11"
}
Чтобы передать параметр в resource
конечную точку сведений о пользователе, добавьте следующие метаданные:
<Item Key="ExtraParamsInClaimsEndpointRequest">resource</Item>
Следующий HTTP-запрос демонстрирует, resource
как параметр передается в конечную точку сведений о пользователе.
GET /oauth2/claims?resource=f2a76e08-93f2-4350-833c-965c02483b11&access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Конечная точка сеанса
Чтобы выйти из приложения, перенаправьте пользователя в конечную точку выхода Azure AD B2C (для OAuth2 и OpenID Connect) или отправьте ( LogoutRequest
для SAML). Azure AD B2C очищает сеанс пользователя из браузера. При запросе на выход Azure AD B2C пытается выйти из любых федеративных поставщиков удостоверений, через которые пользователь мог войти. URI выхода поставщика удостоверений OAuth2 настраивается в end_session_endpoint
метаданных. Когда пользователь выходит из приложения через Azure AD B2C, будет создан скрытый iframe, который будет вызываться end_session_endpoint
на странице выхода Azure AD B2C.
В следующей таблице перечислены метаданные конечной точки сведений пользователя.
Свойство | Обязательно | Описание |
---|---|---|
end_session_endpoint |
Да | URL-адрес конечной конечной точки сеанса в формате RFC 6749. |
SingleLogoutEnabled |
нет | Указывает, будет ли технический профиль при входе пытаться выйти из федеративных поставщиков удостоверений. Дополнительные сведения см. в разделе Выход из сеанса Azure AD B2C. Возможные значения: true (по умолчанию) и false . |
Универсальные метаданные OAuth2
В следующей таблице перечислены универсальные метаданные поставщика удостоверений OAuth2. Метаданные описывают, как технический профиль OAuth2 обрабатывает проверку маркеров, получает утверждения и реагирует на сообщения об ошибках.
Свойство | Обязательно | Описание |
---|---|---|
IdTokenAudience |
нет | Аудитория id_token. Если задано, Azure AD B2C проверяет, находится ли маркер в утверждении, возвращенном поставщиком удостоверений, и равен ли он указанному. |
ProviderName |
нет | Имя поставщика удостоверений. |
ResponseErrorCodeParamName |
нет | Имя параметра, содержащего сообщение об ошибке, возвращаемое по протоколу HTTP 200 (ОК). |
IncludeClaimResolvingInClaimsHandling |
нет | Для входящих и исходящих утверждений указывает, включено ли разрешение утверждений в технический профиль. Возможные значения: true или false (по умолчанию). Если вы хотите использовать сопоставитель утверждений в техническом профиле, задайте для этого параметра значение true . |
ResolveJsonPathsInJsonTokens |
нет | Указывает, разрешает ли технический профиль пути JSON. Возможные значения: true или false (по умолчанию). Используйте эти метаданные для чтения данных из вложенного элемента JSON. В outputClaim задайте PartnerClaimType для элемента пути JSON, который требуется вывести. Например, firstName.localized или data[0].to[0].email . |
Криптографические ключи
Элемент CryptographicKeys содержит следующий атрибут:
Свойство | Обязательно | Описание |
---|---|---|
client_secret |
Да | Секрет клиента приложения поставщика удостоверений. Криптографический ключ требуется только в том случае, если для response_types заданы code метаданные. В этом случае Azure AD B2C выполняет другой вызов для обмена кода авторизации на маркер доступа. Если для метаданных задано id_token значение, можно опустить криптографический ключ. |
assertion_signing_key |
нет |
token_endpoint_auth_method Если для метаданных задано private_key_jwt значение, предоставьте сертификат X509 для подписи ключа JWT. Этот ключ должен быть предоставлен поставщиком удостоверений OAuth2. |
Перенаправляющий URI
При настройке URI перенаправления поставщика удостоверений введите https://{tenant-name}.b2clogin.com/{tenant-name}.onmicrosoft.com/oauth2/authresp
. Обязательно замените {tenant-name}
имя клиента (например, contosob2c). URI перенаправления должен содержать только строчные символы.