2017-08-17 38 views
0

假設我有一個本地應用程序需要發送請求的Web API。此API需要通過本機應用程序來驗證用戶是誰發出這些請求。 OpenID Connect似乎是正確的選擇,因爲它涉及身份驗證而非OAuth授權。OpenID Connect - 在這種情況下,id標記是否應該發送到受保護的資源?

本機應用程序將用戶憑證發送給IDP,並獲取訪問令牌(用於授權)和ID令牌(用於驗證)。根據我對OIDC的理解,訪問令牌將被髮送到API,但id令牌僅用於本地客戶端應用程序。這對我來說沒有意義,因爲它關心的是用戶是誰,而不是原生應用。

那麼,爲什麼id標記還沒有傳遞給受保護的資源(aka API)呢?如果您沒有將ID標記傳遞給API,那麼什麼保證訪問標記是安全的並且可以用於對用戶進行身份驗證?否則,它似乎失去了通過OAuth使用OIDC的好處。

回答

3

OIDC規範的設計方式是ID令牌總是用於客戶端(本機應用程序),而訪問令牌用於資源(API)。 ID令牌總是JWT令牌,但訪問令牌可以是不同的類型。

訪問令牌的目的不是驗證,而是授權(委託授權)。如果由於某種原因,資源服務器想要了解用戶,可以調用用戶信息端點。

安全/令牌交換的有效性可以通過多種方式進行驗證:

  • 使用加密/簽名與在授權服務器加密/簽名的訪問令牌用自己的私鑰和資源公鑰/私鑰模式服務器用公鑰解密/驗證。

  • 使用令牌內省端點驗證索賠,令牌等的有效性..

其他屬性,如澳元,在驗證發出訪問令牌AZP幫助。

一些OIDC提供商使用ID_Tokens訪問API的 - 這是不同的,以通過OIDC規範

article建議有詳細的瞭解這些情況的解釋模型。

相關問題