共用方式為


簽發者服務通訊範例

Microsoft Entra Verified ID 服務可以從組織 OpenID 相容身份提供者所產生的 ID 令牌擷取宣告,以發出可驗證的憑證。 本文會指示您如何設定身分提供者,讓 Authenticator 能夠與其通訊,並擷取正確的 ID 令牌以傳送至發行服務。

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

特徵 描述
授與類型 必須支援授權碼授與類型。
令牌格式 必須產生未加密的壓縮 JWT。
簽章演算法 必須產生使用 RS 256 簽署的 JWT。
設定檔 必須支援 OpenID Connect 組態檔和 jwks_uri
用戶端註冊 必須使用 vcclient://openid/redirect_uri 值來支援公用客戶端註冊。
PKCE 建議基於安全性考慮,但並非強制要求。

以下包含傳送至識別提供者的 HTTP 要求範例。 您的識別提供者必須根據 OpenID Connect 驗證標準接受並回應這些要求。

用戶端註冊

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

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

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

向識別提供者註冊應用程式之後,請記錄其用戶端識別碼。 您將在接下來的部分中使用它。 您也需要將 URL 寫到 OIDC 相容識別提供者的已知端點。 發行服務會使用此端點下載 ID 令牌驗證所需的公鑰,當它被 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 標準,在 ID token 中以宣告形式傳回。

當它收到授權要求時,您的識別提供者應該驗證使用者,並採取任何必要步驟來完成登入,例如多重要素驗證。

您可以自訂登入程式以符合您的需求。 您可以要求使用者提供其他資訊、接受服務條款、支付其認證等等。 完成所有步驟之後,請重新導向至重新導向 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 識別提供者傳回的授權碼。

當您的身份提供者收到憑證請求時,它會以 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"
}

標識元令牌必須使用 JWT 壓縮串行化格式,而且不得加密。 識別令牌應包含以下宣告。

索賠 價值
kid 用來簽署 ID 令牌的密鑰之金鑰標識符,對應至 OpenID 提供者 jwks_uri中的條目。
aud 應用程式註冊程序期間取得的用戶端識別碼。
iss 必須是您的 OpenID Connect 設定文件中的 issuer 值。
exp 必須包含標識元令牌的到期時間。
iat 必須包含發出標識元令牌的時間。
nonce 授權要求中包含的值。
其他主張 ID Token 應該包含任何其他宣告,其值將納入將要發行的可驗證認證中。 本節是您應該包含使用者的任何個人屬性,例如他們的名字。

後續步驟