2

我需要使用 Oauth2 实现 SSO 系统。我了解 oauth2 中的步骤,但我不知道生成授权码或 access_token 的具体算法是什么,可能是哈希或其他东西。我在互联网上找不到

4

5 回答 5

2

OAuth 2 规格:

根据资源服务器的安全要求,访问令牌可以具有不同的格式、结构和使用方法(例如,加密属性)。

令牌(和授权码)的格式没有由规范定义,因此没有特定的算法

规格确实需要:

授权服务器必须确保访问令牌不能被未经授权
的方生成、修改或猜测以产生有效的访问令牌

因此,例如,一个随机的 UUID 就是一个很好的令牌。您还可以考虑JWT 令牌

于 2016-04-04T20:14:08.147 回答
1

OAuth2 规范没有指定任何生成令牌值的算法或方式。您可以使用任何算法(甚至序列号从 1 开始)来生成这些令牌值。您可以使用更复杂的随机数生成、加密、加密算法。它们中的大多数都可以很快生成密钥值,但是您需要检查当前身份验证服务器生成密钥的速度以及它是否满足您的服务要求。

例如,对于 Spring Security 中的令牌生成,DefaultTokenServices 使用随机 UUID 生成访问令牌和刷新令牌。

于 2017-01-06T02:46:25.863 回答
0

OAuth2 没有定义生成或保护令牌(授权码、访问/刷新令牌)的特定方法。您可以实现任何强对称加密算法,以便您可以保护或加密您发送的令牌。

  1. 如果您不想根据数据库检查令牌,则应该使用这种强加密。
  2. 如果可以根据数据库检查令牌,您可以使用键值对,以便您向用户提供键,并且值仅存储在数据库中。
于 2017-04-14T11:17:46.390 回答
0

除非您想实现自己的 Oauth 生成器,否则您可以使用现有的提供程序(例如 WSO2 API Manager)来支持您的系统。它有据可查,并为此提供了许多 REST API。

于 2016-05-28T19:38:41.200 回答
0

access_token 包含声明。oauth2 规范中提到的用户/客户端身份验证和其他验证也是如此。然后,如果您考虑将 JWT 用于 access_token 格式,那么您可以使用 jose4j api 来创建也支持 JWE 和 JWS 的 access_token。

于 2017-02-09T09:26:31.897 回答