【发布时间】:2017-07-04 07:52:29
【问题描述】:
是否有适合与 OpenID Connect 一起使用的标准 HTTP 身份验证方案?我想到的场景如下:
HTTP 服务需要对用户进行身份验证。一种可能的身份验证方法是使用来自第 3 方 OpenID 提供者的联合身份。该服务作为机密客户端在第 3 方 OpenID Provider 中注册,并拥有一个 client_id 和一个客户端密码。
当用户尝试访问 HTTP 服务时,服务器会以 401 Unauthorized 和 WWW-Authenticate 标头进行响应,其中包含有关如何使用 OpenID 提供程序发起身份验证请求的信息:
WWW-Authenticate: OpenIDConnect realm="MyService", client_id="1234-5678", authorization_url="https://provider/authorize"
客户端联系授权端点,进行身份验证,然后获取授权码。然后通过Authorization 标头在对服务的后续请求中指定代码,例如:
GET / HTTP/1.1
Authorization: OpenIDConnect client_id="1234-5678", code="AAABAAA..."
服务将使用代码从 OpenID 提供者获取 ID 令牌,并与客户端建立经过身份验证的会话,例如通过设置 cookie 或返回一组新的凭据以用于后续请求。
OpenIDConnect 方案是我为这个例子编造的。我曾尝试寻找一种标准方法来做类似的事情,但没有结果给我留下了以下可能的答案:
- 我搜索的不够仔细。
- 我正在尝试做的是误导和错误的。
- 为此,每个人都实施了自己的自定义身份验证方案
【问题讨论】:
标签: rest http authentication http-headers openid