如何在 Spring Security 中指定 Open ID Realm?
Posted
技术标签:
【中文标题】如何在 Spring Security 中指定 Open ID Realm?【英文标题】:How do I specify Open ID Realm in spring security? 【发布时间】:2011-02-05 05:18:23 【问题描述】:我们在我们的应用程序中使用 Spring 安全性,支持基于用户名/密码的身份验证以及基于 Open id 的身份验证。
问题是 google 为指定的返回 url 提供了不同的开放 id,我们的应用程序中至少有 2 个不同的入口点,开放 id 配置到我们的系统中。
因此我们决定使用开放 ID 领域。
https://blog.***.com/2009/0...ue-per-domain/
http://groups.google.com/group/googl...unts-api?pli=1
如何将领域集成到我们的 spring 配置/代码中? 这就是我们在传统的 openid 库代码中的做法:
AuthRequest authReq = consumerManager.authenticate(discovered, someReturnToUrl,"http://www.example.com");
这可以为我们网站的不同网址提供相同的开放 ID。
我们的配置:
代码:
...
<http auto-config="false">
<!-- <intercept-url> tags are here -->
<remember-me user-service-ref="someRememberedService" key="some key" />
<form-login login-page="/Login.html" authentication-failure-url="/Login.html?error=true" always-use-default-target="false" default-target-url="/MainPage.html"/>
<openid-login authentication-failure-url="/Login.html?error=true" always-use-default-target="true" default-target-url="/MainPage.html" user-service-ref="someOpenIdUserService"/>
</http>
...
<beans:bean id="openIdAuthenticationProvider" class="org.springframework.security.providers.openid.OpenIDAuthenticationProvider">
<custom-authentication-provider />
<beans:property name="userDetailsService" ref="openIdUserService"/>
</beans:bean>
<beans:bean id="openIdUserService" class="some.package.OpenIDUserDetailsService">
</beans:bean>
...
【问题讨论】:
【参考方案1】:这个问题真的很老了,没有一个答案就让它死掉真是太可惜了。 有几个教程,主要针对 SS 版本 3:
教程一:Spring Security 3 - OpenID Login with Google Provider
教程2:Exploring Google and OpenID login with Spring Security and Spring Roo
【讨论】:
以上是关于如何在 Spring Security 中指定 Open ID Realm?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Security SAML 配置远程发现?
如何使用 spring 的 jdbcTemplate 在 SQL 查询中指定参数
如何在 Spring/Spring Boot pom.xml 中指定 Java 版本?