ID 토큰에 대한 확인 가능한 자격 증명 만들기

idTokens 증명을 사용하는 규칙 정의는 사용자가 Microsoft Authenticator의 OIDC(OpenID Connect) ID 공급자에 대해 대화형 로그인을 수행해야 하는 발급 흐름을 생성합니다. ID 공급자가 반환하는 ID 토큰의 클레임을 사용하여 발급된 확인 가능한 자격 증명을 채울 수 있습니다. 규칙 정의의 클레임 매핑 섹션은 사용되는 클레임을 지정합니다.

idTokens 증명 형식으로 사용자 지정 자격 증명 만들기

Azure Portal에서 자격 증명 추가를 선택하면 두 개의 빠른 시작을 실행할 수 있는 옵션이 표시됩니다. 사용자 지정 자격 증명을 선택한 다음, 다음을 선택합니다.

사용자 지정 자격 증명을 만들기 위한 문제 자격 증명 빠른 시작의 스크린샷

새 자격 증명 만들기 페이지에서 표시 및 규칙 정의에 대한 JSON 코드를 입력합니다. 자격 증명 이름 상자에서 형식 이름을 자격 증명에 지정합니다. 자격 증명을 만들려면 만들기를 선택합니다.

표시 및 규칙 파일에 대한 JSON 샘플을 표시하는 새 자격 증명 만들기 페이지의 스크린샷

샘플 JSON 표시 정의

JSON 표시 정의는 증명 형식에 관계없이 거의 동일합니다. 확인 가능한 자격 증명이 가지고 있는 클레임에 따라 레이블만 조정하면 됩니다. 표시 정의에 필요한 JSON은 표시 컬렉션의 내부 콘텐츠입니다. JSON은 컬렉션이므로 여러 로캘을 지원하려는 경우 쉼표를 구분 기호로 사용하여 여러 항목을 추가합니다.

{
    "locale": "en-US",
    "card": {
      "title": "Verified Credential Expert",
      "issuedBy": "Microsoft",
      "backgroundColor": "#000000",
      "textColor": "#ffffff",
      "logo": {
        "uri": "https://didcustomerplayground.blob.core.windows.net/public/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 구성 세부 정보(clientId, 구성, redirectUri 및 범위) 및 클레임 매핑 섹션이 포함되어야 합니다. 규칙 정의에 필요한 JSON은 증명 특성으로 시작하는 규칙 특성의 내부 콘텐츠입니다.

다음 예제에서 클레임 매핑을 위해서는 ID 공급자의 ID 토큰에 있는 클레임 섹션에 설명된 대로 토큰을 구성해야 합니다.

{
  "attestations": {
    "idTokens": [
      {
        "clientId": "8d5b446e-22b2-4e01-bb2e-9070f6b20c90",
        "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 ID 공급자에 있는 등록된 애플리케이션의 애플리케이션 ID입니다. Microsoft Entra ID의 경우 다음을 수행하여 애플리케이션을 만듭니다.

  1. Azure Portal에서 Microsoft Entra ID로 이동합니다.

  2. 앱 등록을 선택하고, 새 등록을 선택한 다음, 앱에 이름을 지정합니다.

    테넌트의 계정만 로그인할 수 있도록 하려면 이 디렉터리의 계정만 확인란을 선택한 상태로 둡니다.

  3. 리디렉션 URI(선택 사항)에서 공용 클라이언트/네이티브(모바일 및 데스크톱)를 선택한 다음, vcclient://openid/ 입력합니다.

Microsoft Entra 토큰에 어떤 클레임이 있는지 테스트하려면 다음을 수행합니다.

  1. 왼쪽 창에서 인증>플랫폼 추가>을 선택합니다.

  2. 리디렉션 URI에 대해 https://jwt.ms를 입력한 다음, ID 토큰(암시적 및 하이브리드 흐름에 사용됨)을 선택합니다.

  3. 구성을 선택합니다.

ID 토큰 테스트를 마쳤으면 https://jwt.ms암시적 및 하이브리드 흐름에 대한 지원을 제거하는 것이 좋습니다.

Microsoft Entra ID의 경우: 앱 등록을 테스트할 수 있고, https://jwt.ms로 리디렉션 지원을 사용하도록 설정했으면 브라우저에서 다음을 실행하여 ID 토큰을 가져올 수 있습니다.

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>를 테넌트 ID로 바꿉니다. 추가 클레임을 얻으려면 프로필범위에 포함해야 합니다.

Azure Active Directory B2C의 경우: 앱 등록 프로세스가 동일하지만 B2C에는 Azure Portal에서 사용자 흐름 실행 기능을 통해 B2C 정책을 테스트하기 위한 기본 지원이 포함되어 있습니다.

ID 공급자의 ID 토큰의 클레임

클레임은 확인 가능한 자격 증명을 성공적으로 채울 수 있도록 반환된 ID 공급자에 있어야 합니다.

클레임이 없으면 발급된 확인 가능한 자격 증명에 값이 없습니다. 클레임에서 사용자 프로필에 null 값이 있으면 대부분의 OIDC ID 공급자가 ID 토큰에서 클레임을 발급하지 않습니다. ID 토큰 정의에 클레임을 포함하고 사용자 프로필에 클레임에 대한 값을 입력했는지 확인합니다.

Microsoft Entra ID의 경우: 토큰에 포함할 클레임을 구성하려면 앱에 선택적인 클레임 제공을 참조하세요. 구성이 애플리케이션별로 적용되므로 이 구성은 규칙 정의에서 클라이언트 ID에 지정된 애플리케이션 ID를 포함하는 앱에 대한 구성이어야 합니다.

일치하는 표시 및 규칙 정의를 찾으려면 애플리케이션의 optionalClaims 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의 경우: ID 토큰에서 기타 클레임의 구성은 B2C 정책이 사용자 흐름 또는 사용자 지정 정책인지에 따라 달라집니다. 사용자 흐름에 대한 자세한 내용은 Azure Active Directory B2C에서 등록 및 로그인 흐름 설정을 참조하세요. 사용자 지정 정책에 대한 자세한 내용은 앱에 선택적인 클레임 제공을 참조하세요.

다른 ID 공급자에 대한 내용은 관련 설명서를 참조하세요.

사용자 지정 자격 증명 발급 및 확인을 위한 샘플 구성

사용자 지정 자격 증명 발급 및 확인을 위해 샘플 코드를 구성하려면 다음이 필요합니다.

  • 테넌트의 발급자 DID(탈중앙화 식별자)
  • 자격 증명 형식
  • 자격 증명에 대한 매니페스트 URL

사용자 지정 자격 증명에 대한 이 정보를 찾는 가장 쉬운 방법은 Azure Portal에서 자격 증명으로 이동하는 것입니다. 자격 증명 발급을 선택합니다. 그런 다음 Request Service API에 대한 JSON 페이로드가 있는 텍스트 상자에 액세스할 수 있습니다. 자리 표시자 값을 해당 환경의 정보로 바꿉니다. 발급자의 DID는 권한 값입니다.

빠른 시작 사용자 지정 자격 증명 발급에 대한 스크린샷.

다음 단계

규칙 및 표시 정의 참조를 확인하세요.