移动应用程序和OAuth集成



我们目前正在为OAuth-in-out生态系统进行设计。当然,移动应用程序将使用用户凭据授予类型向OAuth服务器进行身份验证,以获得用于进一步工作流的令牌。另一方面,受保护的资源服务器将使用相同的OAuth服务器验证令牌信息并做出相应的响应。

一切都很清楚,但有一点令人担忧:要做到这一点,我们必须在代码中编译客户端机密来交付应用程序。这打开了一个很大的安全漏洞。有没有办法避免它,或者它甚至是一个问题?

谢谢,

来自RFC 6749,4.3.2。访问令牌请求:

The authorization server MUST:
   o  require client authentication for confidential clients or for any
      client that was issued client credentials (or with other
      authentication requirements),

因此,如果客户端类型(RFC 6749,2.1。客户端类型)是public(并且您的客户端尚未获得客户端机密),您不必在令牌请求中包含客户端机密。换句话说,您可以在不向授权服务器提供客户端机密的情况下获得访问令牌。在这种情况下,可以避免将客户端机密嵌入到客户端应用程序中。

另一方面,如果客户端应用程序的客户端类型为机密,则不应将客户端应用程序交付给智能手机。

如何将客户端类型设置为公开或机密取决于您使用的授权服务器的实现。有些实现提供了一个明确的切换按钮来选择公共或机密。其他人不提供这种显式选项,并且客户端应用程序的客户端类型是隐式确定的。例如,如果您在授权服务器提供的配置页面中选择Android应用程序,则客户端类型将变为公共类型。

但是,请注意,一些授权服务器实现可能总是需要客户端机密,而不管客户端类型是公开的还是机密的。

相关内容

  • 没有找到相关文章