java - 跨域认证

标签 java http spring-security shiro

我正计划设置一个将被其他网站访问的网络服务。这个想法是必须保护网络服务,并且每个访问网络服务的站点都将根据其注册域进行身份验证。

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

我现在思考的问题是这种系统是否会“扩展”并“工作”

我用过 Apache Shiro 和 Spring Security,但我从未遇到过这种需求。

最佳答案

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

关于java - 跨域认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106431/

相关文章:

java - Thymeleaf 3 URL 解析不适​​用于 Spring Boot 4 + Spring Security

java - Android:MediaPlayer AUDIOFOCUS_LOSS 和 setOnErrorListener() 问题

java - 如何比较2个LinkedHashMap并获得键和值的差异?

java - 防止和检测打开文件的删除

c++ - 从网站下载文件的库?

java - 具有自定义身份验证提供程序的 Spring Security 不适用于用户名中的特殊字符

java - 矩阵交换行 - Java

c# - 将通过 HTTP 流式传输的 wav 实时转换为 mp3

java - 多线程和并发上下文中的 HttpClient 行为

angularjs - 使用 AngularJS 限制从 Grails Restful 服务返回的数据