Создание проверяемых удостоверений для маркеров идентификации
Определение правил, использующее аттестацию idTokens, создает поток выдачи, в котором требуется выполнить интерактивный вход в поставщик удостоверений OpenID Connect (OIDC) через Microsoft Authenticator. Утверждения в маркере идентификации, возвращаемые поставщиком удостоверений, могут использоваться для заполнения выданных проверяемых удостоверений. В разделе сопоставления утверждений в определении правил указываются используемые утверждения.
Создание пользовательских удостоверений с типом аттестации "маркеры идентификации"
После нажатия кнопки Добавить учетные данные на портале Azure вы получите возможность открыть два кратких руководства. Выберите пользовательские учетные данные и щелкните Далее.
На странице Создать новые учетные данные введите код JSON для отображения и определения правил. В поле Имя учетных данных присвойте имя типа учетным данным. Выберите команду Создать, чтобы создать учетные данные.
Примеры определений отображения JSON
Определения отображения JSON почти неизменны для любого типа аттестации. Вам остается лишь изменить метки в соответствии с тем, какие утверждения есть в вашем проверяемом удостоверении. Ожидаемый файл JSON для определений отображения — это внутреннее содержимое коллекции дисплеев. JSON — это коллекция, поэтому если требуется поддержка нескольких языковых стандартов, добавьте несколько записей, используя запятую в качестве разделителя.
{
"locale": "en-US",
"card": {
"title": "Verified Credential Expert",
"issuedBy": "Microsoft",
"backgroundColor": "#000000",
"textColor": "#ffffff",
"logo": {
"uri": "https://didcustomerplayground.z13.web.core.windows.net/VerifiedCredentialExpert_icon.png",
"description": "Verified Credential Expert Logo"
},
"description": "Use your verified credential to prove to anyone that you know all about verifiable credentials."
},
"consent": {
"title": "Do you want to get your Verified Credential?",
"instructions": "Sign in with your account to get your card."
},
"claims": [
{
"claim": "vc.credentialSubject.userName",
"label": "User name",
"type": "String"
},
{
"claim": "vc.credentialSubject.displayName",
"label": "Display name",
"type": "String"
},
{
"claim": "vc.credentialSubject.firstName",
"label": "First name",
"type": "String"
},
{
"claim": "vc.credentialSubject.lastName",
"label": "Last name",
"type": "String"
}
]
}
Примеры определений правил JSON
Определение аттестации JSON должно содержать имя idTokens, сведения о конфигурации OIDC (идентификатор клиента, конфигурацию, URI перенаправления и область) и раздел сопоставления утверждений. Ожидаемый файл JSON для определений правил — это внутреннее содержимое атрибута правил, которое начинается с атрибута аттестации.
Для сопоставления утверждений в следующем примере нужно настроить маркер, как описано в разделе Утверждения в токене идентификации от поставщика удостоверений.
{
"attestations": {
"idTokens": [
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"configuration": "https://didplayground.b2clogin.com/didplayground.onmicrosoft.com/B2C_1_sisu/v2.0/.well-known/openid-configuration",
"redirectUri": "vcclient://openid/",
"scope": "openid profile email",
"mapping": [
{
"outputClaim": "userName",
"required": true,
"inputClaim": "$.upn",
"indexed": true
},
{
"outputClaim": "displayName",
"required": true,
"inputClaim": "$.name",
"indexed": false
},
{
"outputClaim": "firstName",
"required": true,
"inputClaim": "$.given_name",
"indexed": false
},
{
"outputClaim": "lastName",
"required": true,
"inputClaim": "$.family_name",
"indexed": false
}
],
"required": false
}
]
},
"validityInterval": 2592000,
"vc": {
"type": [
"VerifiedCredentialExpert"
]
}
}
Регистрация приложения
Атрибут clientId представляет собой идентификатор зарегистрированного приложения в поставщике удостоверений OIDC. Для идентификатора Microsoft Entra необходимо создать приложение, выполнив следующие действия.
В портал Azure перейдите к идентификатору Microsoft Entra.
Выберите Регистрация приложений и нажмите кнопку Новая регистрация, затем укажите имя приложения.
Если вы хотите, чтобы входить могли только учетные записи из вашего клиента, сохраните флажок Учетные записи только в этом каталоге.
В URI перенаправления (необязательно) выберите общедоступный клиент или собственный (мобильный и классический) и введите vcclient://openid/.
Если вы хотите проверить утверждения, включенные в маркер идентификатора Microsoft Entra, сделайте следующее:
На панели слева последовательно выберите Проверка подлинности>Добавление платформы>Интернет.
Введите https://jwt.ms в качестве URI перенаправления и выберите Маркеры идентификации (используемые для неявных и гибридных потоков).
Выберите Настроить.
Когда вы завершите тестирование маркера идентификации, лучше всего удалить https://jwt.ms и поддержку неявных и гибридных потоков.
Для идентификатора Microsoft Entra: вы можете проверить регистрацию приложения и, если вы включили поддержку перенаправления https://jwt.ms, вы можете получить маркер идентификатора, выполнив следующие действия в браузере:
https://login.microsoftonline.com/<your-tenantId>/oauth2/v2.0/authorize?client_id=<your-appId>&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid%20profile&response_type=id_token&prompt=login
В этом коде замените заполнитель <your-tenantId> реальным идентификатором клиента. Чтобы получить дополнительные утверждения, вам потребуется профиль в рамках области.
Для Azure Active Directory B2C процесс регистрации приложений аналогичен, но в B2C есть встроенная поддержка тестирования политик B2C на портале Azure с помощью функции Запуск потока пользователя.
Утверждения в маркере идентификатора, полученном от поставщика удостоверений
Для успешного заполнения проверяемого удостоверения утверждения должны находиться в возвращенном поставщике удостоверений.
Если утверждения отсутствуют, выданное проверяемое удостоверение не приносит никакой пользы. Большинство поставщиков удостоверений OIDC не выдают утверждение в маркере идентификации, если утверждение имеет значение NULL в вашем профиле. Обязательно включите утверждение в определение маркера идентификатора и введите значение для утверждения в профиле пользователя.
Идентификатор Microsoft Entra: чтобы настроить утверждения для включения в маркер, см. дополнительные утверждения для приложения. Конфигурация создается отдельно для каждого приложения, поэтому в этой конфигурации нужно указать идентификатор приложения из определения правил.
Чтобы соответствовать определениям отображения и правил, необходимо сделать json необязательных JSON приложения следующим образом:
"optionalClaims": {
"idToken": [
{
"name": "upn",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "family_name",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "given_name",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "preferred_username",
"source": null,
"essential": false,
"additionalProperties": []
}
],
"accessToken": [],
"saml2Token": []
},
Для Azure Active Directory B2C параметры других утверждений в маркере идентификации зависит от того, является ли политика B2C потоком пользователя или настраиваемой политикой. Сведения о потоках пользователя можно найти в статье Настройка потока регистрации и входа в Azure Active Directory B2C. Сведения о настраиваемой политике см. в статье Предоставление дополнительных утверждений для приложения.
Для других поставщиков удостоверений обратитесь к соответствующей документации.
Настройка примеров для выдачи и проверки пользовательских учетных данных
Чтобы настроить пример кода для выдачи и проверки с помощью пользовательских учетных данных, вам потребуется следующее:
- Децентрализованный идентификатор издателя (DID) для вашего арендатора
- Тип учетных данных
- URL-адрес манифеста для учетных данных
Самый простой способ найти эти сведения для пользовательских учетных данных — перейти к нужным учетным данным на портале Azure. Выберите Выдать учетные данные. После этого вы получите доступ к текстовому полю с полезными данными JSON для API службы запросов. Замените значения заполнителей на данные для вашей среды. DID издателя — это значение центра.