我打算设置一个可供其他网站访问的网络服务。我们的想法是必须保护Web服务,并且访问Web服务的每个站点都将根据其注册域进行身份验证。
GET, PUT, POST, DELETE
等),这些方法通常是Javascript HTTP Request 我现在想到的问题是这种系统是否会“缩放”并且“会起作用”
我曾与Apache Shiro和Spring Security合作,但我从未遇到过这种要求。
答案 0 :(得分:0)
请注意,根据设计,您的系统将在没有密码的情况下对用户进行身份验证。
这意味着,如果在http://foo.com用户访问时使用访问权限,他将在身份验证后获得foo.com
用户权限而不提供密码。
我想建议您使用自己的PreAuthenticatedProcessingFilter
解决问题:
http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6167
在getPreAuthenticatedPrincipal
的实施中,只需获取请求网址,从请求网址中提取域名(不包含子域名)信息,然后使用PreAuthenticatedAuthenticationProvider
进行身份验证。
AuthenticationUserDetailsService
PreAuthenticatedAuthenticationProvider
应从数据库中加载注册域名。
答案 1 :(得分:0)
我想我看到了一种使用自定义过滤器的方法:
在注册过程中,将新域保存到DB,然后获取可信IP地址列表
InetAddress[] hosts = InetAddress.getAllByName( "www.stackoverflow.com" );
for(InetAddress host : hosts) {
String ip = host.getHostAddress();
}
// add ip to a list
更新PartnerSiteCheckerFilter内的IP列表。
希望这会有所帮助。感觉自由发表任何问题。