OpenID授权码的HTTP身份验证标头

时间:2017-02-15 15:05:37

标签: rest http authentication http-headers openid

是否有适合与OpenID Connect一起使用的标准HTTP身份验证方案?我想到的场景如下:

HTTP服务要求对用户进行身份验证。一种可能的身份验证方法是使用来自第三方OpenID提供程序的联合身份。该服务在第三方OpenID提供商处注册为机密客户端,并拥有client_id和客户机密。

当用户尝试访问HTTP服务时,服务器会使用401 UnauthorizedWWW-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方案是我为这个例子做的事情。我试图寻找一种类似的标准方法,而且没有结果给我留下了以下可能的答案:

  1. 我的搜索力度不够。
  2. 我想做的是误导和错误。
  3. 为此目的,每个人都实现了自己的自定义身份验证方案

1 个答案:

答案 0 :(得分:0)

我认为你首先不知道在哪里寻找。自RFC 7353起,HTTP中的身份验证方案受IANA HTTP Authentication Scheme Registry的约束。在所述注册表中,您将找到受RFC 5849, section 3.5.1约束的Basic方案,并且看起来很像您正在寻找的方案。尽管如此,这是针对OAuth 1.0的。 OAUth 2.0采用BearerRFC 6749)和{{1}}(RFC 6750)计划。

这完全是关注授权(通过OAuth)。不过,OpenID的领域是身份验证。您可能需要查看What's the difference between OpenID and OAuth?