0

假設我調用下面的HTTP請求:ID連接堅持ID令牌至服務器端回調函數

https://accounts.example.com/oauth2/auth? 
scope=openid+email& 
nonce=53f2495d7b435ac571& 
redirect_uri=https%3A%2F%2Foauth2demo.appspot.com%2Foauthcallback& 
response_type=id_token+token& 
client_id=753560681145-2ik2j3snsvbs80ijdi8.apps.googleusercontent.com 

其產生下列重定向響應:

https://oauth2demo.appspot.com/oauthcallback# 
access_token=ya29.AHES6ZSzX 
token_type=Bearer& 
expires_in=3600& 
id_token=eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiY... 

是什麼的點回調參數,因爲返回的元數據(包含id_token等)位於URI中的散列片段之後,因此不會作爲回調函數的參數持續存在?服務器端回調如何接收各種令牌?

回答

1

此處使用的響應類型是一種所謂的「隱式」響應類型,主要用於瀏覽器內(如Javascript)客戶端,在這種情況下,在回調URL上提供的Javascript代碼可以訪問片段中的參數。 Web應用程序應該做的任一個:

  1. 固守code流動,這是爲Web應用程序客戶端
  2. 使用,如果由OP支持的表單提交響應模式(http://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html
  3. 服務上的JavaScript它分析了從碎片,並將它們發佈的參數到服務器

底線是,如果你需要的令牌服務器端,你應該最有可能使用code響應類型的回調URL。

+0

謝謝。從這裏,我認爲確定用戶聲明的下一步是請求訪問令牌,並使用它來調用用戶信息端點? –

+0

如果id_token中的聲明不足以實現您的目標,那麼yes –

+0

授權碼授權流程不會返回ID令牌,我也不能配置它。設置id_token或id_token標記response_type參數似乎會調用隱式授權流程。 ID令牌不會持久保存到服務器。我認爲我唯一的選擇是調用用戶信息端點。 –