閱讀英文

共用方式為


簽發者服務通訊範例

Microsoft Entra 認證識別碼,透過由您組織的 OpenID 符合規範識別提供者,所產生的識別碼權杖中擷取宣告,並發出可驗認證。 本文指示您如何設定身分識別提供者,讓 Authenticator 可以與其通訊,擷取正確的識別碼權杖,並傳遞給發行服務。

若要發出可驗認證,請下載合約指示 Authenticator,以收集使用者輸入,並傳送該資訊至發行服務。 如果您需要使用識別碼權杖,就必須設定您的身分識別提供者,以允許 Authenticator 使用 OpenID Connect 通訊協定登入使用者。 結果識別碼權杖中的宣告會用來填入可驗認證之內容。 Authenticator 使用 OpenID Connect 授權碼流程,驗證使用者。 您的 OpenID 提供者必須支援下列 OpenID Connect 功能:

功能 描述
授與類型 必須支援授與程式碼類型。
語彙基元格式 必須產生未加密的精簡 JWT。
簽章演算法 必須產生使用 RS 256 簽署的 JWT。
設定文件 必須支援 OpenID Connect 設定檔與jwks_uri
用戶端登錄 必須支援使用redirect_uri數值的vcclient://openid/公用用戶端註冊。
PKCE 基於安全性考慮,建議使用,但非必要。

傳送給您身分識別提供者的 HTTP 要求範例如下述所列。 您的身分識別提供者必須根據 OpenID Connect 的驗證標準,接受並回應這些要求。

用戶端登錄

若要接收可驗認證,您的使用者必須從 Microsoft Authenticator 應用程式登入您的 IDP。

若要啟用此交換,請向您的身分識別提供者註冊應用程式。 如果您是使用 Microsoft Entra ID,可以在這裡找到指示。 註冊時,請使用下列數值。

設定
應用程式名稱 <Issuer Name> Verifiable Credential Service
重新導向 URI vcclient://openid/

向您的身分識別提供者註冊應用程式之後,請記錄其用戶端識別碼。 您會在接下來的章節中使用該識別碼。 您也需要將 URL 寫入至 OIDC 相容身分識別提供者的已知端點。 發行服務會使用此端點下載驗證識別碼權杖所需的公開金鑰,而該權杖會由 Authenticator 傳送。

Authenticator 使用設定的重新導向 URI,讓它知道登入何時完成,而且可擷取識別碼權杖。

授權要求

傳送給您身分識別提供者的授權要求會使用下列格式。

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 用來簽署識別碼權杖金鑰的金鑰識別碼,且可對應至 OpenID 提供者的 jwks_uri 輸入。
aud 在應用程式註冊過程中取得的用戶端識別碼。
iss 必須是 OpenID Connect 設定文件中的issuer數值。
exp 必須包含識別碼權杖的到期時間。
iat 必須包含發出識別碼權杖的時間。
nonce 授權要求中包含的數值。
其他宣告 識別碼權杖應包含任何額外的宣告,且在將要發出的可驗認證中也會包含其數值。 您應在此區段中包含任何與使用者相關的屬性,例如其名稱。

下一步