热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在_如何在带有Github的SpringBoot上使用OIDC

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何在带有Github的SpringBoot上使用OIDC相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何在带有Github的Spring Boot上使用OIDC相关的知识,希望对你有一定的参考价值。



我很难找到最新的示例,因此希望能有所帮助。我有一个使用默认登录页面的简单oauth2login()。这样的配置非常简单:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
@Override
public void configure(HttpSecurity http) throws Exception
http.authorizeRequests()
.and()
.oauth2Login();

我的RESTcontroller和RequestMapping

@RequestMapping("/*")
public String getGithub()
return "Welcome Github user!";

这是我的application.properties

spring.security.oauth2.client.registration.github.client-id=myclientid
spring.security.oauth2.client.registration.github.client-secret=mysecret
spring.security.oauth2.client.registration.github.scope=oidc

我了解到在新版本中,主体是自动配置的,所以我在控制器中尝试过。

@RequestMapping("/*")
public String getGithub(java.security.Principal user)

return "Welcome," + user.getName();

最终得到这个:Welcome,14137580

当我打印出toString()时,我得到了。

Welcome,org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken@c65573ba: Principal: Name: [14137580], Granted Authorities: [[ROLE_USER, SCOPE_oidc]], User Attributes: [login=CatStevens, id=14137570, node_id=MDQ6VXNlcjE0MTM3NTuu, avatar_url=https://avatars0.githubusercontent.com/u/14137570?v=4, gravatar_id=, url=https://api.github.com/users/CatStevensl, html_url=https://github.com/CatStevens, followers_url=https://api.github.com/users/CatStevens/followers, following_url=https://api.github.com/users/CatStevens/following/other_user, gists_url=https://api.github.com/users/CatStevens/gists/gist_id, starred_url=https://api.github.com/users/CatStevens/starred/owner/repo, subscriptions_url=https://api.github.com/users/CatStevens/subscriptions, organizations_url=https://api.github.com/users/CatStevens/orgs, repos_url=https://api.github.com/users/CatStevens/repos, events_url=https://api.github.com/users/CatStevens/events/privacy, received_events_url=https://api.github.com/users/CatStevens/received_events, type=User, site_admin=false, name=Cat Stevens, company=null, blog=, location=null, email=null, hireable=null, bio=null, public_repos=16, public_gists=0, followers=3, following=1, created_at=2015-09-05T10:56:11Z, updated_at=2019-11-09T02:38:04Z]; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: E22A05F6B6BEE589F9ED7D57BC3900DD; Granted Authorities: ROLE_USER, SCOPE_oidc

关于如何从Github的OIDC配置文件范围中隔离名称(小写)的任何想法?另外,为什么添加个人资料和电子邮件时无法编译?

这只是一个简单的客户端Spring Boot Web应用程序,具有Github的OAuth 2.0和OIDC。

我可以使用2.2.0版本中使用默认配置最直接的方法是从id_token提取名称并将其添加到我的RequestMapping中,这样它说“你好,从id_token提取的用户名”

旁注:我一直看到自定义项,我只想在OAuth2上使用默认配置,但我也必须使用OIDC。我是否需要在内存中添加ClientRegistration?我所看到的只是EnableOauth2SSO / Principal示例,并且我不想回到该版本。

答案

您可以使用类似的方法来检索id_token和所需的其他详细信息。

@RequestMapping(value = "/name", method = RequestMethod.GET)
@ResponseBody
public String getName(Authentication authentication, Principal principal)
System.out.println(authentication.getName());
System.out.println(principal.getName());
return authentication.getName();

参考:https://www.baeldung.com/get-user-in-spring-security

我的使用aws-cognito的示例项目:https://github.com/h-hub/aws-cognito-spring


推荐阅读
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
author-avatar
LordHo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有