我目前正在開展OpenId服務器/客戶端用於演示目的,我很難理解以下規範。
http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthRequestOpenId連接隱式流與資源所有者密碼證書授予
1)clientApp發送一個請求(AJAX)的serverApp以便獲得一個會話ID
2)clientApp發送認證請求(AJAX)的serverApp與
{
response_type : "id_token",
scope: "openid profile",
client_id: "clientApp",
redirect_uri : "clientAppAddress/redirecturi",
state: ???,
nonce: ???
}
grant_type,用戶名和密碼沒有可選字段(如在RFC6749中:訪問令牌請求)。我怎樣才能傳輸證書?
此外,我不理解「狀態」和「隨機數」背後的概念。該規範指出,nonce的值「需要包含每會話狀態,並且對攻擊者來說是不可猜測的。爲Web服務器客戶端實現此目的的一種方法是將密碼隨機值存儲爲HttpOnly會話cookie,並使用該值的加密哈希值作爲nonce參數「,而狀態用於緩解CSRF,XSRF」通過用瀏覽器cookie將該參數的值加密綁定「。它們之間的區別在哪裏以及它們如何提高安全性?我會使用sessionid的哈希值(存儲在http only cookie中,並在第一個請求中發送給客戶端)爲他們兩個?