资源服务器的OAuth2.0访问令牌验证

时间:2020-09-02 07:50:44

标签: validation oauth-2.0 token

我正在尝试在一个基于Java的Web项目中实现OAuth2.0授权框架。 我使用MS Azure作为资源所有者(R.O)+身份验证服务器(A.S)。

我还创建了一些自定义范围(即属性)以包含在访问令牌中。

我的问题是-when client receives access token from Azure AD and forwards it to the Resource Server, how does resource server(RS) validates this access token ? How can RS decode the token and read the "scope".

RS从未连接到R.O或A.S。

注意。我不想使用OIDC。我只想通过OAuth2来实现这一点

2 个答案:

答案 0 :(得分:0)

以下是到目前为止我可以看到的两个选项:

  1. 客户端发送RS已预先配置有client_id和client_secret。
    Client_Id和client_secret将由 订阅者注册APP时的Azure AD。客户发送时 到RS的访问令牌,客户端还包括从其接收的“代码” Azure AD(即资源所有者,即Azure AD)。 RS现在可以触发 带有“代码” + client_id的GET请求。然后,Azure AD可以发布一个 访问令牌返回到RS。 RS可以在此处映射校验和并进行验证 如果访问令牌是相同的(即已授权)。

  2. 客户端将访问令牌发送到RS。 RS使用base64解码令牌,并且仅检查到期和客户端ID。 如果到期有效且客户端ID相同,则RS会认为令牌有效。

1st option seems to be more secured where RS can validate the access token and can also refresh the tokens if required.

答案 1 :(得分:0)

我假设您所指的令牌是JWT令牌。解码JWT令牌并不重要,因为令牌只是Base64编码。

但是验证令牌很重要。

有两种验证令牌的方法(令牌完好无损,之间没有调节):

  1. 如果使用对称算法(HS256,...)对令牌进行了签名,则与AS所使用的RS相同的密钥必须与RS一起使用。我想,就您而言,这是不可能的。因为您将没有钥匙。
  2. 如果令牌是使用非对称算法(RS256,...)签名的。 AS将使用“私钥”对令牌进行签名,RS将使用相应的公钥来验证令牌。

注意:非对称密钥算法是RS验证令牌的CPU密集型任务。