mar*_*eig 9 spring cas oauth-2.0 jwt rest-security
在我们公司,我们部署了多个使用CAS服务器通过SSO保护的Web应用程序.用户请求应用程序的URL,如果尚未经过身份验证,则会重定向到CAS服务器登录页面.在成功验证的情况下,用户将被重定向回最初请求的URL.常见的工作流程,完美运作
但是,我们还希望使用CAS Server保护我们的REST Apis.我们的首选流程如下:
听起来像OA服务器,CAS服务器确实支持,除了不要求用户随时提供凭据,但我们也想为服务提供身份验证,即调用我们的API的其他应用程序:
我们希望我们的REST Api应用程序对用户凭据一无所知,甚至无法访问用户数据库,这对于使用该应用程序的人来说效果很好(重定向到CAS登录页面).
我不知道如何在不必大量定制CAS服务器的情况下实现此流程并自行实现此行为.
谷歌使用JWT for OAuth 2.0用于服务器到服务器应用程序,这似乎是要走的路.
如果有人能提供一些提示或替代方案(对CAS服务器),我将不胜感激.也许有人已经使用CAS服务器实现了这种模式,并且可以提供有关此问题的一些信息.
最诚挚的问候,Marco
最后我们让它以一种简单的方式工作:
在CAS服务器:
REST端点/cas/../token返回一个JSON对象:
{ serviceTicket: 'ST-ALKSJDFLSJDFLKJ-Ljksdf-sdflkjsf' }
Run Code Online (Sandbox Code Playgroud)
at(基于Spring)CAS客户端(受保护资源):
<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
<property name="service" value="${cas.service.url}" />
<property name="sendRenew" value="false" />
<property name="authenticateAllArtifacts" value="true"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
现在,想要访问受保护资源的客户端可以
GET /rest/foo/bar HTTP/1.1 Host: www.example.com Authorization: CUSTOM_SCHEME ST-ALKSJDFLSJDFLKJ-Ljksdf-sdflkjsf
由于CAS客户端CasAuthenticationFilter在每个请求上获得工件(即ST),因此客户端仅在单个请求中进行身份验证.
此外,在CAS服务器上,您可以将ST配置为仅对n个请求有效(CAS客户端在CAS服务器上请求serviceValidate URL 的次数).
我认为这是一个非常好的方法,无需大规模定制CAS服务器和客户端,并随后创建关键的安全漏洞.
归档时间: |
|
查看次数: |
11270 次 |
最近记录: |