我目前正在开展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中,并在第一个请求中发送给客户端)为他们两个?