gpt4 book ai didi

java - Spring OAuth2资源服务器,根据OAuth信息创建新用户

转载 作者:行者123 更新时间:2023-12-01 18:12:33 26 4
gpt4 key购买 nike

我已经使用 google 设置了 OAuth2 作为我的资源服务器 (Spring) 的授权服务器,并且我可以使用 OAuth2 访问我的服务器上的 API。虽然我不确定注册用户的最佳方式是什么。

我可以检查用户是否已存在于服务器中,并在用户发出 API 请求时创建它。但我不确定这是否是应该的方式。我对 OAuth2 很陌生,两天前才开始学习如何实现它们,因此我希望得到一些有关正确执行方法的反馈。

如下所示,当获取 token 的用户信息后找不到用户或将其作为现有用户保存在数据库中时,我会抛出异常。

private Authentication getAuthenticationToken(String accessToken) {
Map<String, ?> userInfo = getUserInfo(accessToken);
String id = (String) userInfo.get("sub");
String email = (String) userInfo.get("email");
Boolean email_verified = (Boolean) userInfo.get("email_verified");
String given_name = (String) userInfo.get("given_name");
String family_name = (String) userInfo.get("family_name");
String name = (String) userInfo.get("name");
String picture = (String) userInfo.get("picture");

User user = userService.getUserByEmail(email);
if (id == null)
{
throw new InternalAuthenticationServiceException("User not found");
//If possible replace this with API Response
}
else if(user == null)
{
throw new InternalAuthenticationServiceException("User not registered");
//If possible forward request to registration page to create user with userinfo?
//Or should i just create user everytime this happens?
}

return new UsernamePasswordAuthenticationToken(new GooglePrincipal(userService.getUserByEmail(email)), null, conversionUtils.getUserAuthority(user.getRoles()));
}

最佳答案

这是一个棘手的领域,通常没有得到很好的解释。

我假设登录后您会将 Google token 中的用户电子邮件与您自己的数据库进行匹配?这是一种非常常见的技术。

不确定我知道什么最适合您,但我的 write up可能会给您一些有关识别和管理用户的选项的想法。

关于java - Spring OAuth2资源服务器,根据OAuth信息创建新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60439877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com