Oauth 2.0 Apache CXF中客户端凭据OAuth 2流的哈希客户端机密

Oauth 2.0 Apache CXF中客户端凭据OAuth 2流的哈希客户端机密,oauth-2.0,cxf,Oauth 2.0,Cxf,我正在尝试使用ApacheCXF(版本2.7.12)实现OAuth2.0的客户端凭据流,以确保RESTful服务的安全 我唯一的客户(目前)将被信任对密钥和机密保密——我知道这方面的考虑因素 我的问题是如何在授权服务器上存储客户机机密。在我看来,“客户机密”实际上是一个密码,因此应该进行加密和散列。然而,CXF的AccessTokenService在存储的机密和请求传递的值之间进行比较,它只进行String.equals()比较,似乎没有给我提供任何可以提供不同机制的钩子 这意味着我需要以纯文本

我正在尝试使用ApacheCXF(版本2.7.12)实现OAuth2.0的客户端凭据流,以确保RESTful服务的安全

我唯一的客户(目前)将被信任对密钥和机密保密——我知道这方面的考虑因素

我的问题是如何在授权服务器上存储客户机机密。在我看来,“客户机密”实际上是一个密码,因此应该进行加密和散列。然而,CXF的AccessTokenService在存储的机密和请求传递的值之间进行比较,它只进行String.equals()比较,似乎没有给我提供任何可以提供不同机制的钩子

这意味着我需要以纯文本的形式存储客户机机密,以便将其与请求中的纯文本值进行比较,而无需使用稍微有点粗糙的替代方法


我是否缺少一些明显的功能,可以让我在比较之前对传入值进行散列,还是我对客户机机密过于谨慎?也许我把它当作密码来对待是错误的?

这是一种回答,对于将来遇到这个问题的人来说

我的方法是创建一个非常简单的过滤器(如下所述:),手动创建SecurityContext(),并在消息通过过滤器时将其添加到消息中

这意味着,当流继续流向CXF的AccessTokenService时,它被标识为已被验证

我还问了一个关于CXF邮件列表的问题,并得到了一位开发人员非常迅速的回复,他同意他最近注意到这是一个潜在的问题,并正在研究它。几小时之内,他就做出了改变,解决了这个问题,看起来这是一个理想的解决方案。不幸的是,我还没有找到时间来测试它,因为我的解决方案可以工作,并且给了我一点额外的灵活性,这有助于我的项目的其他需求