Поделиться через


Примеры взаимодействия со службой издателя

Служба Проверенный идентификатор 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 Это значение включено в состав запроса авторизации.
Дополнительные утверждения Токен идентификации должен содержать все дополнительные утверждения, значения которых будут включены в выдаваемое проверяемое удостоверение. В этот раздел нужно включить все атрибуты, касающиеся пользователя, например его имя.

Следующие шаги