Примеры взаимодействия со службой издателя
Служба Проверенный идентификатор Microsoft Entra может выдавать проверяемые удостоверения, извлекая утверждения из токена идентификации, который создан поставщиком удостоверений вашей организации, совместимым с OpenID. Из этой статьи вы узнаете, как настроить поставщик удостоверений, чтобы приложение Authenticator могло взаимодействовать с ним и получить правильный токен идентификации для передачи в службу выдачи.
Для выдачи проверяемого удостоверения приложению Authenticator посредством скачивания контракта предписывается собрать входные данные у пользователя и отправить их в службу выдачи. Если требуется использовать токен идентификации, нужно настроить поставщик удостоверений, чтобы позволить приложению Authenticator входить в систему пользователя с помощью протокола OpenID Connect. Утверждения в полученном токене идентификации используются для заполнения содержимого проверяемого удостоверения. Authenticator проверяет подлинность пользователя с помощью потока кода авторизации OpenID Connect. Поставщик OpenID Connect должен поддерживать следующие функции OpenID Connect.
Функция | Description |
---|---|
Тип предоставления разрешения | Должен поддерживать тип предоставления кода авторизации. |
Формат токенов | Должен создавать незашифрованные сжатые JWT. |
Алгоритм подписи | Должен создавать JWT, подписанные с помощью RS 256. |
Документ конфигурации | Должен поддерживать документ конфигурации OpenID Connect и jwks_uri . |
Регистрация клиента | Должен поддерживать регистрацию общедоступного клиента с использованием значения vcclient://openid/ для redirect_uri . |
PKCE | Рекомендуется по соображениям безопасности, но не является обязательным. |
Примеры HTTP-запросов, отправленных поставщику удостоверений, приведены ниже. Поставщик удостоверений должен принять эти запросы и ответить на них в соответствии со стандартом проверки подлинности OpenID Connect.
Регистрация клиента
Чтобы получить проверяемое удостоверение, пользователям нужно войти в ваш поставщик удостоверений из приложения Microsoft Authenticator.
Чтобы включить такой обмен, зарегистрируйте приложение в поставщике удостоверений. Если вы используете идентификатор Microsoft Entra, вы можете найти инструкции здесь. При регистрации используйте приведенные ниже значения.
Параметр | Значение |
---|---|
Имя приложения | <Issuer Name> Verifiable Credential Service |
URI-адрес перенаправления | vcclient://openid/ |
После регистрации приложения в поставщике удостоверений запишите его идентификатор клиента. Он понадобится в следующем разделе. Кроме того, нужно записать URL-адрес в известную конечную точку для поставщика удостоверений, совместимого с OIDC. Служба выдачи использует эту конечную точку для скачивания открытых ключей, необходимых для проверки токена идентификации, когда его отправляет приложение Authenticator.
Настроенный URI перенаправления используется приложением Authenticator, чтобы узнать, когда вход завершен и можно извлечь токен идентификации.
Запрос авторизации
Запрос авторизации, отправленный поставщику удостоверений, использует указанный ниже формат.
GET /authorize?client_id=<client-id>&redirect_uri=vcclient%3A%2F%2Fopenid%2F&response_mode=query&response_type=code&scope=openid&state=12345&nonce=12345 HTTP/1.1
Host: www.contoso.com
Connection: Keep-Alive
Параметр | Значение |
---|---|
client_id |
Идентификатор клиента, полученный в процессе регистрации приложения. |
redirect_uri |
Должен использовать vcclient://openid/ . |
response_mode |
Должен поддерживать query . |
response_type |
Должен поддерживать code . |
scope |
Должен поддерживать openid . |
state |
Должен возвращаться клиенту в соответствии со стандартом OpenID Connect. |
nonce |
Должен возвращаться как утверждение в токене идентификации в соответствии со стандартом OpenID Connect. |
При получении запроса авторизации поставщик удостоверений должен выполнить проверку подлинности пользователя и предпринять все действия, необходимые для завершения входа, например многофакторную проверку подлинности.
Вы можете настроить процесс входа в соответствии со своими потребностями. Вы можете попросить пользователей предоставить дополнительную информацию, принять условия предоставления услуг, оплатить учетные данные и многое другое. По завершении всех шагов ответьте на запрос авторизации, выполнив перенаправление на URI перенаправления, как показано ниже.
vcclient://openid/?code=nbafhjbh1ub1yhbj1h4jr1&state=12345
Параметр | Значение |
---|---|
code |
Код авторизации, возвращенный поставщиком удостоверений. |
state |
Должен возвращаться клиенту в соответствии со стандартом OpenID Connect. |
Запрос маркера
Запрос токена, отправленный поставщику удостоверений, будет иметь указанную ниже форму.
POST /token HTTP/1.1
Host: www.contoso.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 291
client_id=<client-id>&redirect_uri=vcclient%3A%2F%2Fopenid%2F&grant_type=authorization_code&code=nbafhjbh1ub1yhbj1h4jr1&scope=openid
Параметр | Значение |
---|---|
client_id |
Идентификатор клиента, полученный в процессе регистрации приложения. |
redirect_uri |
Должен использовать vcclient://openid/ . |
scope |
Должен поддерживать openid . |
grant_type |
Должен поддерживать authorization_code . |
code |
Код авторизации, возвращенный поставщиком удостоверений. |
После получения запроса токена поставщик удостоверений должен ответить с использованием токена идентификации.
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzc
yI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5
NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZ
fV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5Nz
AKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6q
Jp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJ
NqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7Tpd
QyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoS
K5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4
XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"
}
Токен идентификации должен иметь компактный формат сериализации JWT и не должен быть зашифрован. Токен идентификации должен содержать указанные ниже утверждения.
Утверждение | Значение |
---|---|
kid |
Идентификатор ключа, использованного для подписания токена идентификации, соответствующий записи в jwks_uri поставщика OpenID. |
aud |
Идентификатор клиента, полученный в процессе регистрации приложения. |
iss |
Это должно быть значение issuer в документе конфигурации OpenID Connect. |
exp |
Должно содержать время окончания срока действия токена идентификации. |
iat |
Должно содержать время выдачи токена идентификации. |
nonce |
Это значение включено в состав запроса авторизации. |
Дополнительные утверждения | Токен идентификации должен содержать все дополнительные утверждения, значения которых будут включены в выдаваемое проверяемое удостоверение. В этот раздел нужно включить все атрибуты, касающиеся пользователя, например его имя. |