2017-02-15 72 views
0

是否有它適合與ID連接到使用一個標準的HTTP認證方案?我心目中的場景如下:HTTP認證報頭的OpenID授權碼

HTTP服務需要用戶的身份驗證。其中一種可能的身份驗證方法是使用來自第三方OpenID提供商的聯合身份。該服務作爲機密客戶端向第三方OpenID提供商註冊,並擁有client_id和客戶機密鑰。

WWW-Authenticate: OpenIDConnect realm="MyService", client_id="1234-5678", authorization_url="https://provider/authorize" 

客戶端將聯繫授權:

當用戶試圖訪問HTTP服務,該服務器具有401 Unauthorized,以及有關如何發起與OpenID提供的認證請求一個WWW-Authenticate報頭信息包含響應端點,進行身份驗證,然後獲得授權碼。該代碼隨後經由Authorization頭的後續請求到服務指定,例如:

GET/HTTP/1.1 

Authorization: OpenIDConnect client_id="1234-5678", code="AAABAAA..." 

該服務將使用的代碼來從OpenID提供獲得ID令牌和與所述客戶端建立一個鑑權會話,例如通過設置一個cookie或返回一組新的憑證用於後續請求。

OpenIDConnect方案是我彌補了這個例子。我試圖尋找一種標準的方式來做類似的事情,而缺乏結果讓我有以下可能的答案:

  1. 我還沒有足夠努力的搜索。
  2. 我想要做的是誤導和錯誤。
  3. 每個人實現自己的定製身份驗證方案用於此目的

回答

0

我想你不知道到哪裏尋找在首位。由於RFC 7353,HTTP中的認證方案受制於IANA HTTP Authentication Scheme Registry。在所述註冊表中,您將找到OAuth計劃,該計劃受RFC 5849, section 3.5.1約束,並且看起來很像您正在尋找的東西。這就是說,但是,這是OAuth 1.0。 OAUTH 2.0訴諸BasicRFC 6749)和BearerRFC 6750)方案。

此以其整體被concernig 授權(通過OAuth)。不過,OpenID的領域是認證。你可能想看看What's the difference between OpenID and OAuth?

+0

感謝。由於OpenID Connect基於OAuth 2.0,因此我認爲OAuth 1.0方案不適合用於我的目的。我認爲'承載者'是不合適的,原因有兩個:(1)它是OAuth 2.0訪問令牌,而我最終需要的是一個id_token(正如你指出的那樣,我對認證感興趣而不是授權)。 (2)我需要發送授權碼,而不是令牌。正如OIDC Core規範中所述,我正在有效地尋找一種可用於將授權代碼從用戶代理傳輸到機密客戶端的方案。 –

+0

但無論如何,由於您鏈接到的註冊表不包含適合我的確切用例的任何內容,我想答案是沒有定義任何標準方案。 –

+0

@UlrikRasmussen也許[本指南](http://openid.net/specs/openid-connect-basic-1_0.html)對你有幫助?(注意[這部分](http://openid.net/specs/openid-connect-basic-1_0.html#TokenRequest))但是你是對的:沒有專門爲OpenID Connect預留的認證方案。 – DaSourcerer