首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨域认证

跨域认证
EN

Stack Overflow用户
提问于 2013-04-19 14:00:05
回答 2查看 1.3K关注 0票数 2

我计划建立一个网络服务,将被其他网站访问。其思想是,web服务必须得到保护,并且每个访问web服务的站点都将根据其注册的域进行身份验证。

  • 网站所有者将从我的web服务的web前端注册他们的域名(如foo.com)。
  • 接下来,他们的站点将发出HTTP方法(GET, PUT, POST, DELETE等),这些方法通常是Javascript请求
  • 访问web服务的站点不需要进行身份验证;web服务将确定它来自的域是否已预先注册,如果是,我将根据站点的域处理请求。

我现在想的问题是这种制度是否会“规模”和“起作用”。

我曾经使用过Apache和Security,但是我从未遇到过这种需求。

EN

回答 2

Stack Overflow用户

发布于 2013-04-19 15:01:45

请注意,通过设计,您的系统将对没有密码的用户进行身份验证。这意味着,如果使用access (如果用户从http://foo.com访问),那么在身份验证之后,他将在不提供密码的情况下获得foo.com用户权限。我建议使用您自己的PreAuthenticatedProcessingFilterhttp://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6167来解决getPreAuthenticatedPrincipal实现中的问题,只需获取请求URL,从请求URL中提取域(没有子域)信息,并使用PreAuthenticatedAuthenticationProvider进行身份验证。AuthenticationUserDetailsService of PreAuthenticatedAuthenticationProvider应该从数据库加载已注册的域。

票数 0
EN

Stack Overflow用户

发布于 2013-04-19 15:30:28

我想我找到了一种使用自定义过滤器的方法:

  1. 添加您自己的自定义过滤器,类似于PartnerSiteCheckerFilter。它将为每个合作伙伴服务器提供一个IP地址列表。它只检查API请求(例如/api/**)。任何与IP不匹配的请求都将被拒绝(AccesDeniedException)。
  2. 注册过程中,将新域保存到DB,然后获取受信任的IP地址列表。 InetAddress[]主机= InetAddress.getAllByName( "www.stackoverflow.com“);for(InetAddress主机:主机){ String ip = host.getHostAddress();} //将ip添加到列表中
  3. 更新PartnerSiteCheckerFilter内部的IP列表。
  4. 准备一些组件,在应用程序启动时从DB读取域列表,然后为每个服务器获取IP并将该列表插入到PartnerSiteCheckerFilter中。
  5. 每个域的受信任服务器列表在运行时可能会更改。因此,也许提供一些方法来更新它是有帮助的。

希望这能有所帮助。觉得有什么问题可以提出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16106431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档