我正在尝试在一个基于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来实现这一点
答案 0 :(得分:0)
以下是到目前为止我可以看到的两个选项:
客户端发送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可以在此处映射校验和并进行验证 如果访问令牌是相同的(即已授权)。客户端将访问令牌发送到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编码。
但是验证令牌很重要。
有两种验证令牌的方法(令牌完好无损,之间没有调节):
注意:非对称密钥算法是RS验证令牌的CPU密集型任务。