我们正在尝试设置Oauth2客户端凭证授权,以保护我们部署在k8上的API。
1.我们使用OryHydra作为授权服务器,向客户端发布访问令牌
- nginx作为我们的入口控制器,对于每个API,我们使用
auth-url
注解将请求定向到自定义组件
1.定制组件基本上检索JWT令牌并验证它。
问题更多的是关于这个具有验证逻辑的自定义组件:
1.我们想使用scope
进行授权,但是我应该在哪里保存scope
和上游API之间的Map呢?目前我们只是使用上下文路径。例如,如果api-a
具有上下文路径api-a
,则客户端将请求具有范围api-a
的令牌,然后我们验证X-Original-Url
前缀是否为issuer
+scope
。这似乎不是一个灵活的方法,只是想知道通常这个Map会保存在哪里?
1.由于我使用jwt token作为访问令牌,这是否意味着我不再需要使用introspect
调用授权服务器?因为我可以在本地验证jwt token的有效性?
1条答案
按热度按时间mccptt671#
第一季度
可以检查入口中的作用域,但这可能会产生部署问题,例如,当API逻辑更改时,必须频繁地重新配置或重新部署入口。
最灵活的选择是将JWT转发到每个上游API,这样它们就可以使用OAuth令牌范围应用粗粒度授权,并使用OAuth令牌声明应用细粒度授权。
例如,这提供了一个设置,如果API编码正确,则可以避免OWASP 1号API漏洞broken object level authorization。
第二季度
您不需要内省JWT。内省与不透明访问令牌一起使用,其作用通常是防止将敏感的访问令牌数据泄露给Internet客户端。