使用spring-security-oauth2来保护我的资源免受可充当授权服务器的SSO端点的影响。我有点困惑时,文档指出:将资源服务器和授权服务器分开的正确方法是什么?
中的OAuth 2.0提供者的角色实际上是授权服务和资源服务之间的分裂,而这些有时会驻留在同一个应用程序,使用Spring Security的OAuth你有选项将它们分成两个应用程序,并且还有多个共享授权服务的资源服务。
但我不认为我发现了这种情况的例子。在sparklr/tonr中,授权服务器和资源服务器驻留在同一个应用程序中。我从搜索中看到的唯一示例是this spring-servlet.xml,这需要this定制实现ResourceServerTokenServices
才能正常工作。
如果可能的话,我想避免写一个自定义实现ResourceServerTokenServices
。是否有另一种方法可以在资源服务器中支持外部授权服务器?沿线的东西:
<bean class="com.example.ExternalAuthorizationServerTokenServices"
p:remote-url="https://my-oauth-compatible-sso.com"
p:token-endpoint="/oauth/access_token"
p:authorize-endpoint="/oauth/authorize" />
这可能吗?编辑:我将添加为解决方法(或者这可能是预期的解决方案)我正在使用jdbc令牌存储,并依靠这两个服务器碰巧有权访问该数据库的事实。
怎样的结果来看?我开始面对同样的问题,任何建议将不胜感激。 – beku8
结果正是我要找的。只要你为资源服务器和授权服务器指定了一个指向相同'DataSource'的'JdbcTokenStore',它就好像工作得很好。 – Joe
我已经分离了auth和资源服务器。尽管如此,测试用例并不完整。你可以在这里找到它https://github.com/nareshbafna/oauth2 – anfab