Oauth 2.0 OpenID-Connect的WWW认证方案

Oauth 2.0 OpenID-Connect的WWW认证方案,oauth-2.0,openid-connect,Oauth 2.0,Openid Connect,我正在为OpenID连接协议编写自己的代码。基本上,我打算通过Objectify library使用Jersey和Google的数据存储在Google App Engine的平台上编写我自己的提供商和相关内容 我正在执行(Access /刷新)令牌端点,这里有我需要处理的客户端身份验证。我只是想知道如果客户在注册过程中没有设置client\u secret\u basic(或者数据存储条目中设置的任何内容),是否可以发送预设的身份验证方案的关键字 对于使用以下方法失败的客户端身份验证,该方案用作

我正在为OpenID连接协议编写自己的代码。基本上,我打算通过Objectify library使用Jersey和Google的数据存储在Google App Engine的平台上编写我自己的提供商和相关内容

我正在执行(Access /刷新)令牌端点,这里有我需要处理的客户端身份验证。我只是想知道如果客户在注册过程中没有设置

client\u secret\u basic
(或者数据存储条目中设置的任何内容),是否可以发送预设的身份验证方案的关键字

对于使用以下方法失败的客户端身份验证,该方案用作WWW Authenticate标头(401)中的响应:

  • client\u secret\u basic
    basic
  • client\u secret\u post
  • client\u secret\u jwt
  • 私钥jwt
  • none
    :显然没有
我看过一些开源实现,“和”,但它们似乎没有处理这个小问题(它们只响应中定义的一般错误响应)

如果没有预定义的关键字,那么我想我必须自己编一个。但是,如果它们存在的话,那就太好了。

对于这些问题的解决方案是在IANA。在那里,你可以找到以下几把:

  • 基本的
  • 持票人
  • 消化
  • 霍巴
  • 相互的
  • 协商
  • 非统组织
  • 紧急停堆-SHA1
  • 紧急停堆-SHA-256
  • 乏味的

以下哪一项是
client\u secret\u post
client\u secret\u jwt
private\u key\u jwt
?没有一个您需要将这些映射到上面注册列表中的一个,或者返回您自己的值。更好的是,你可以提交一份草稿给OAuthWork工作组或OpenID基金会,让上面的IANA注册表更新一些对这些缺失的案例有意义的东西。然后,我们可以互操作:-)

我不确定我是否完全理解这个问题。是不是你去发送了一些额外的信息,连同401。如果是这样,那么这是您在web服务器上使用的RP(依赖方)软件返回错误的功能。同样,在OpenIDC/Oauth2的情况下,客户端不是浏览器,而是服务器上的RP软件,“客户端身份验证”是在RP和OP之间,而不是在Web浏览器/最终用户和RP之间。Web浏览器不应该知道RP和OP之间的关系以及它们如何进行身份验证,可以攻击向量。是的,我想在WWW身份验证头中发送额外信息,以及401响应(JSONError=无效IDClient)。不,我的客户端不是浏览器,我知道。我不认为RP最初的功能是发送这样的错误,可能RP会将其转发到浏览器或任何用户代理(如果这是您的意思),但RP最初应该通过失败的RP(客户端)身份验证响应中的令牌端点从OP处获取此错误。我正在使用phpOIDC进行OP,以及my RP的mod_auth_openidc。它允许在每个客户端id的令牌点身份验证方法的OP上进行配置。它根据客户端断言类型参数和/或算法类型查找方法。我注意到在OP的代码中有一点被注释掉了,说“不确定为什么需要这个,不是规范的一部分”。它抛出一个错误,表示令牌端点身份验证类型不匹配,并显示请求的值和OP上注册的值,即client_secret_basic!=客户的秘密帖子。我想答案是你滚吧own@Severun哈哈,谢谢你的挖掘。。。我想我应该给它们加上
OAuth2-*
前缀。我想我将使用
oauth2post
oauth2jwt
,等等,因为它们最初是在OAuth2中引入的。您在phpOIDC中发现的内容与OAuth2API和nimbus中实现的内容基本相同。