- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解我是否正确处理了我的服务器身份验证
我正在创建一个使用 Facebook 自动登录的服务器,而且我正在使用 hibernate
我通过与默认 JdbcUsersConnectionRepository
相同的过程来做到这一点但我总是返回一个用户。如果没有找到。
@Override
public List<String> findUserIdsWithConnection(Connection<?> connection) {
List<String> ret = new LinkedList<String>();
ConnectionKey key = connection.getKey();
MyUser myUser = userService.getUserBySocialConnection(key.getProviderId(), key.getProviderUserId());
if (myUser == null)
{
MyUser user = userService.createUserFromConnection(connection);
String myUserId = String.valueOf(user.getId());
ret.add(myUserId);
}else
{
ret.add(String.valueOf(myUser.getId()));
}
return ret;
}
所以我的 signIn
有这个代码。登录用户:
public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
MyUser user = userService.getUserById(Long.parseLong(userId));
Authentication authentication = SecurityToolbox.signInUser(user);
// set remember-me cookie
MyUser myu = (MyUser)authentication.getPrincipal();
userCookieGenerator.addCookie(String.valueOf(myu.getId()), request.getNativeResponse(HttpServletResponse.class));
return null;
}
以及 SecurityToolBox
中的登录代码:
public static Authentication signInUser(MyUser user) {
List<GrantedAuthority> authorities = getAuthorities(user);
Authentication authentication = new UsernamePasswordAuthenticationToken(user, "", authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
return authentication;
}
现在所有这些都由我编写的 userInterceptor
处理,如果可用,它会处理读取 cookie 并记住用户(如果存在)。什么是我可以通过 cookie 发送给用户以记住我的最佳保护信息,现在我正在发送用户 ID,但这不是我想要的
我现在想让 spring security 处理我的 session/remmeberme/authentication 过程但我真的不明白我应该做什么。
第一个问题我的代码是否足以通过服务器正确验证用户身份?,在下一个请求中。如果我在 userInterceptor
中询问 SecurityContextHolder.getContext().getAuthentication() != null
我是否可以安全地假设用户已登录?
现在我想让 spring security 来处理我的身份验证,而不是自己使用拦截器来处理。所以我考虑创建一个身份验证管理器。但我不明白我需要在哪些方面进行身份验证
public class CustomAuthenticationManager implements AuthenticationManager {
public Authentication authenticate(Authentication auth)
throws AuthenticationException {}}
我没有用户名和密码,我只是使用 facebook 进行身份验证以登录,所以我使用什么进行身份验证。总的来说,我在这里有一些知识差距,我真的不明白我应该做什么才能让所有东西粘在一起
第二个问题在我的情况下,authenticate
函数究竟需要发生什么
第三个问题我希望 spring security 处理 session 和 cookie 以记住我。我知道有一个与 u/p token 相同的记住我 token ,但我仍然不明白我应该如何在我的情况下使用它。
第四个问题现在,整个登录过程针对发送到服务器的每个请求(不是资源)进行。这是应该发生的方式吗?
谢谢。
最佳答案
那里有很多问题。首先,您在第一个框中编写的代码实际上已经通过可注入(inject)的 ConnectionSignUp 在 JdbcUsersConnectionRepository 中得到支持。 ConnectionSignUp 是一个策略接口(interface),如果 JdbcUsersConnectionRepository 找不到用户,您可以实现它来创建用户。查看 spring-social-quickstart 应用程序以查看实际操作示例。
无需深入阅读,您的登录代码看起来不错,但我同意从本质上重新创建 Spring Security 已经在拦截器中执行的所有操作需要大量工作。出于这个原因,Spring Social 的最新快照构建包括与 Spring Security 的更紧密集成。
新的东西有一个 SocialAuthenticationFilter,它是一个 Spring Security 身份验证过滤器,就像任何其他身份验证过滤器一样,它直接插入 Spring Security 的过滤器链。此身份验证过滤器的工作原理是将用户的提供商信息与先前在本地应用程序上建立的连接进行比较,如果找到匹配项,将让他们登录。否则,它会重定向到注册页面。
从功能的角度来看,它的作用与 Spring Social 的 ProviderSignInController 相同。然而,它的不同之处在于它与 Spring Security 非常紧密地集成,因此您期望的所有安全性东西(记住我,权限等)都可以像您期望的那样工作,而不需要太多/任何额外的努力部分。
同样,这只是在最新的 1.1.0.BUILD-SNAPSHOT 构建中,但我预计(除非有任何意外)在下周初推出 1.1.0.M2 版本。如果您想查看一些实际操作示例,请查看 spring-social-showcase-sec 或 spring-social-showcase-sec-xml 示例。
关于java - Spring social signin 和 spring security 自定义认证管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545413/
我使用了以下脚本来集成谷歌身份验证 //google auth code gapi.load('auth2', function() {//load in the auth2 api's, witho
我正在寻找支持 mac 催化剂的 google signin sdk。当前版本 5.0.1 也不支持催化剂。是否有任何计划发布? 最佳答案 Google 支持提到了 following关于 Mac C
所以我最近将 Google Signin API 更新到 2.3.1(然后是今天的 2.3.2),从那以后,我的应用程序不再将我跳转到已安装的 Google 应用程序进行身份验证。相反,它总是在应用程
从 Crashlytics,我们在 Google 登录过程中收到大量崩溃报告。崩溃报告如下: Fatal Exception: NSInvalidArgumentException uiDelegat
我正在为 firebase 项目使用 firebase 实现 GoogleSign。我安装了这三个包: "@react-native-firebase/app": "^11.3.0",
这对我来说没有任何意义,当参数相同时断言怎么会失败? ====================================================================== FA
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 2
有谁知道 Google One-tap AKA YOLO 项目的状态? 好像所有的official documentation一键式消失了。缓存版本说明: The beta test program
我正在使用 Google 登录。用户访问我的站点并使用 gapi.auth2.getAuthInstance().signIn() 登录,或者他们已经登录并且当页面加载(或重新加载)时我们获取状态。在
近日部分用户使用谷歌登录时卡在加载中。这个问题好像和账号有关,因为我用的是同一个设备,尝试用不同的账号登录,这个问题只发生在部分账号上。 下面是我的设置:实现“com.google.android.g
我正在尝试将 google 登录页面集成到静态 html 页面。我所要做的就是,当用户点击 google 登录按钮时,他会获得 google 凭据页面,并且在成功验证后我想在 html 页面中显示基本
有人知道 Google One-tap AKA YOLO 项目的状态吗? 似乎所有official documentation一键消失了。缓存版本状态: The beta test program f
我想为我的网络应用程序实现无摩擦登录过程。 经过一番搜索,我发现有两种解决方案: Google Smart Lock . Credential Managment API . 我的问题是,这两个 AP
我有一个现有的网站,该网站使用google openID格式,以“https://www.google.com/accounts/o8/id”开头。 我正在使用Google plus SignIn创建
我正在遵循 Apple 实现“使用 Apple 登录”按钮的指南。在文档中,苹果表示也可以仅使用 Logo 来创建“使用 Apple 登录”的自定义按钮,您还可以将图像的形状更改为具有圆形按钮....
我正在尝试使用没有元数据标签的谷歌登录库。 (解释在最后) 我似乎基本上可以正常工作,但是当我的页面加载时,我遇到了一个未捕获的异常: Missing required parameter 'clie
伙计,我的函数在哪里? 正在尝试调用 GoogleUser.signIn()结果 TypeError: user.signIn is not a function 目标 我想在用户让他们的计算机进入休
我正在为 Android 集成 Google 登录,我想要回 id_token 以便我可以通过我的服务器进行身份验证。我按照 https://developers.google.com/identit
当用户启动应用程序时,我会检查身份验证状态,并显示不同的 ViewControler Logged in -> Main ViewController -> Will pushViewControll
当使用 [GIDSignIn sharedInstance].allowsSignInWithWebView = NO 时,我如何区分用户完成 Google 登录过程或手动切换回我的应用? 最佳答案
我是一名优秀的程序员,十分优秀!