다음을 통해 공유


발급자 서비스 통신 예제

Microsoft Entra 확인된 ID 서비스는 조직의 OpenID 규격 ID 공급자가 생성한 ID 토큰에서 클레임을 검색하여 확인 가능한 자격 증명을 발급할 수 있습니다. 이 문서에서는 Authenticator가 ID 공급자와 통신하고 발급 서비스에 전달할 올바른 ID 토큰을 검색할 수 있도록 ID 공급자를 설정하는 방법을 설명합니다.

확인 가능한 자격 증명을 발급하기 위해 Authenticator는 계약을 다운로드하여 사용자로부터 입력을 수집하고 해당 정보를 발급 서비스로 보내도록 지시합니다. ID 토큰을 사용해야 하는 경우 Authenticator가 OpenID Connect 프로토콜을 사용하여 사용자를 로그인할 수 있도록 ID 공급자를 설정해야 합니다. 결과 ID 토큰의 클레임은 확인 가능한 자격 증명의 내용을 구성하는 데 사용됩니다. 인증자는 OpenID Connect 권한 부여 코드 흐름을 사용하여 사용자를 인증합니다. OpenID 공급자는 다음 OpenID Connect 기능을 지원해야 합니다.

특징 묘사
권한 부여 유형 권한 부여 코드 부여 유형을 지원해야 합니다.
토큰 형식 암호화되지 않은 압축 JWT를 생성해야 합니다.
서명 알고리즘 RS 256을 사용하여 서명된 JWT를 생성해야 합니다.
구성 문서 OpenID Connect 구성 문서와 jwks_uri를 반드시 지원해야 합니다.
클라이언트 등록 vcclient://openid/ redirect_uri 값을 사용하여 공용 클라이언트 등록을 지원해야 합니다.
PKCE 보안상의 이유로 권장되지만 필수는 아닙니다.

ID 공급자에게 전송된 HTTP 요청의 예는 다음과 같습니다. ID 공급자는 OpenID Connect 인증 표준에 따라 이러한 요청을 수락하고 응답해야 합니다.

클라이언트 등록

확인 가능한 자격 증명을 받으려면 사용자가 Microsoft Authenticator 앱에서 IDP에 로그인해야 합니다.

이 교환을 사용하도록 설정하려면 ID 공급자에 애플리케이션을 등록합니다. Microsoft Entra ID를 사용하는 경우여기에서 지침을 찾을 수 있습니다. 등록할 때 다음 값을 사용합니다.

설정
애플리케이션 이름 <Issuer Name> Verifiable Credential Service
리디렉션 URI vcclient://openid/

ID 공급자에 애플리케이션을 등록한 후 해당 클라이언트 ID를 기록합니다. 당신은 다음 섹션에서 그것을 사용할 것입니다. 또한 OIDC 호환 신원 공급자에 대해 잘 알려진 엔드포인트의 URL을 기록해야 합니다. 발급 서비스는 이 엔드포인트를 사용하여 인증자가 보낸 ID 토큰의 유효성을 검사하는 데 필요한 공개 키를 다운로드합니다.

구성된 리디렉션 URI는 로그인이 완료된 시기를 알 수 있도록 Authenticator에서 사용되며 ID 토큰을 검색할 수 있습니다.

권한 부여 요청

ID 공급자에게 전송된 권한 부여 요청은 다음 형식을 사용합니다.

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 애플리케이션 등록 프로세스 중에 가져온 클라이언트 ID입니다.
redirect_uri vcclient://openid/사용해야 합니다.
response_mode query지원해야 합니다.
response_type code지원해야 합니다.
scope openid지원해야 합니다.
state OpenID Connect 표준에 따라 클라이언트에 반환되어야 합니다.
nonce OpenID Connect 표준에 따라 ID 토큰에서 클레임으로 반환되어야 합니다.

인증 요청을 받으면 ID 공급자는 사용자를 인증하고 다단계 인증과 같은 로그인을 완료하는 데 필요한 모든 단계를 수행해야 합니다.

필요에 맞게 로그인 프로세스를 사용자 지정할 수 있습니다. 사용자에게 추가 정보를 제공하고, 서비스 약관에 동의하고, 자격 증명 비용을 지불하도록 요청할 수 있습니다. 모든 단계가 완료되면 아래와 같이 리디렉션 URI로 리디렉션하여 권한 부여 요청에 응답합니다.

vcclient://openid/?code=nbafhjbh1ub1yhbj1h4jr1&state=12345
매개 변수
code ID 공급자가 반환한 권한 부여 코드입니다.
state OpenID Connect 표준에 따라 클라이언트에 반환되어야 합니다.

토큰 요청

ID 공급자에게 전송된 토큰 요청은 다음과 같은 형식입니다.

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 애플리케이션 등록 프로세스 중에 가져온 클라이언트 ID입니다.
redirect_uri vcclient://openid/사용해야 합니다.
scope openid을 지원해야 합니다.
grant_type authorization_code지원해야 합니다.
code ID 공급자가 반환한 권한 부여 코드입니다.

ID 공급자가 토큰 요청을 받으면 ID 토큰으로 응답합니다.

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"
}

ID 토큰은 JWT 압축 serialization 형식을 사용해야 하며 암호화해서는 안 됩니다. ID 토큰에는 다음 클레임이 포함되어야 합니다.

주장
kid ID 토큰에 서명하는 데 사용된 키의 식별자로서 OpenID 공급자의 jwks_uri항목에 해당하는 것입니다.
aud 애플리케이션 등록 프로세스 중에 가져온 클라이언트 ID입니다.
iss OpenID Connect 구성 문서의 issuer 값이어야 합니다.
exp ID 토큰의 만료 시간을 포함해야 합니다.
iat ID 토큰이 발급된 시간을 포함해야 합니다.
nonce 권한 부여 요청에 포함된 값입니다.
추가 클레임 ID 토큰에는 발급될 확인 가능한 자격 증명에 포함될 값이 있는 다른 클레임도 포함되어야 합니다. 이 섹션에서는 사용자에 대한 특성(예: 이름)을 포함해야 합니다.

다음 단계

  • 확인 가능한 자격 증명 사용자 지정