12-SpringSecurity:通过OAuth2集成Github登录,字节跳动网络工程师的面试

这篇具有很好参考价值的文章主要介绍了12-SpringSecurity:通过OAuth2集成Github登录,字节跳动网络工程师的面试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(1) 注册应用

在Github注册一个应用,生成 client-idclient-secret

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

注意这里的Home页: http://localhost:8080 ,以及回调地址: http://localhost:8080/login/oauth2/code/github

(2) 配置 application.yml

spring:

security:

oauth2:

client:

registration:

github:

client-id:

client-secret:

(3) 启动应用

为了看到登录成功后的效果,这里增加一个 Controller ;然后运行应用。

@GetMapping(value = “/”)

public String index() {

log.info(SecurityContextHolder.getContext().getAuthentication().toString());

return "Welcome " + SecurityContextHolder.getContext().getAuthentication();

}

在浏览器键入: http://localhost:8080/login ,返回一个页面,其中包含了 Github 登录链接:

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

点击 Github 登录链接,会自动跳转至 Github 的认证页:

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

输入Github的账号、密码,会进入我们之前配置的Home页:

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

可通过链接退出: http://localhost:8080/logout

借助 SpringSecurityOAuth2.0 的支持,我们几乎不用写什么代码就实现了 Github 登录集成。下面简单了解下登录成功后的 RegistrationAccessToken

实验1:查看Github在我们应用中的注册信息

为了方便调试或查看 registration ,这里新增一个接口端点:

@GetMapping(value = “/user/reg”)

public String registration() {

ClientRegistration githubRegistration = this.clientRegistrationRepository.findByRegistrationId(“github”);

log.info(githubRegistration.toString());

return githubRegistration.toString();

}

访问之后会返回 registration 信息,其中包含了 clientIdclientSecretauthorizationGrantTyperedirectUriscopes 等。

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

实验2:查看获取到的AccessToken

@GetMapping(value = “/user/token”)

public OAuth2AccessToken accessToken(OAuth2AuthenticationToken authentication) {

OAuth2AuthorizedClient authorizedClient = this.authorizedClientService.loadAuthorizedClient(

authentication.getAuthorizedClientRegistrationId(), authentication.getName());

OAuth2AccessToken accessToken = authorizedClient.getAccessToken();

return accessToken;

}

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

Note: 这里的 issuedAtexpiresAt 着实诡异,仅差了一秒,是Github授权服务问题?还没细看是什么原因。。

实验3:通过AccessToken请求Github的API

定义抽象 API 绑定类,通过拦截器将获取到的 AccessToken 设置到后续请求头中,通过 RestTemplate 实现对 API 的请求:

public abstract class ApiBinding {

protected RestTemplate restTemplate;

public ApiBinding(String accessToken) {

this.restTemplate = new RestTemplate();

if (accessToken != null) {

this.restTemplate.getInterceptors().add(getBearerTokenInterceptor(accessToken));

} else {

this.restTemplate.getInterceptors().add(getNoTokenInterceptor());

}

}

private ClientHttpRequestInterceptor getBearerTokenInterceptor(String accessToken) {

return new ClientHttpRequestInterceptor() {

@Override

public ClientHttpResponse intercept(HttpRequest request, byte[] bytes, ClientHttpRequestExecution execution) throws IOException {

request.getHeaders().add(“Authorization”, "Bearer " + accessToken);

return execution.execute(request, bytes);

}

};

}

private ClientHttpRequestInterceptor getNoTokenInterceptor() {

return new ClientHttpRequestInterceptor() {

@Override

public ClientHttpResponse intercept(HttpRequest request, byte[] bytes, ClientHttpRequestExecution execution) throws IOException {

throw new IllegalStateException(“Can’t access the Github API without an access token”);

}

};

}

}

将获取 AccessToken 的过程进行封装:

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试
springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试
springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

springsecruity集成oauth2-client实现github登录,2024年程序员学习,github,网络,面试

1461292059)]

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

[外链图片转存中…(img-dDuzD3Uz-1711461292059)]

[外链图片转存中…(img-6FqTmhyF-1711461292060)]

[外链图片转存中…(img-hwIwDcOL-1711461292060)]

[外链图片转存中…(img-lxfLjk7i-1711461292061)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录文章来源地址https://www.toymoban.com/news/detail-846005.html

到了这里,关于12-SpringSecurity:通过OAuth2集成Github登录,字节跳动网络工程师的面试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OAuth2】OAuth2概述及使用GitHub登录第三方网站

    我们在浏览器上可以访问成百上千个网站,使用每个网站的服务一般都要先注册账号,那么我们为了更好地记忆,一般都会在多个网站使用相同的账号和密码进行注册。那么问题就来了,如果在你注册的网站中有某些个网站的系统设计不够严谨和安全,数据库的用户信息使用

    2024年01月19日
    浏览(60)
  • 【花艺电商】SpringBoot集成MyBatis-Plus、Swagger2、SpringSecurity、OAuth2等技术整合开发

    目录 一、功能介绍 1. 说明 2. 功能实现 3. 技术应用 二、技术详述 1.MyBatis-Plus 主要体现 项目应用 2.SpringSecurity 应用作用 三、页面展示 1. 登入 2. 主页 3. 详情 4. 购物车 5. 订单 6. 沙箱支付 每篇一获 这个项目主要使用了 Spring Security 、 MyBatis-Plus 、 Redis 、 雪花ID 、 参数校验技

    2024年01月25日
    浏览(51)
  • 手摸手接入Github实现Oauth2第三方登录

    最近在学习oauth2授权登录流程,oauth2简单来说就是接入第三方应用(qq、微信、github、gitee等),不用在本站登录,而是去请求第三方应用的用户信息完成登录。 下面就一起来看一下如何接入github实现第三方登录 首先,我们需要在github中添加OAuth App,登录你的github(如果还有

    2024年02月04日
    浏览(69)
  • 如何通过OAuth2.0完成Microsoft平台登录验证

    参考内容: OAuth2 in Python | TestDriven.io 代表用户获取访问权限 - Microsoft Graph | Microsoft Learn OAuth 2.0 Bearer Token Usage 首先需要了解的是,通过Microsoft平台做身份验证,有一些配置时拿到的参数不可或缺(在身份验证的步骤中会用到,不一定是同一个步骤用到),其中包括: client_id:

    2024年02月09日
    浏览(41)
  • Spring Boot整合OAuth2实现GitHub第三方登录

    Github OAuth 第三方登录示例 第三方登录的原理是借助OAuth授权来实现,首先用户先向客户端提供第三方网站的数据证明自己的身份获取授权码,然后客户端拿着授权码与授权服务器建立连接获得一个Access Token,之后客户端就可以通过Access Token来与资源服务器进行交互。 使用O

    2024年02月08日
    浏览(67)
  • SpringSecurity+OAuth2.0

    OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth 在全世界得到广泛应用,目前的版本是 2.0 版。 简单

    2024年02月13日
    浏览(40)
  • SpringSecurity之Oauth2介绍

    第三方认证技术方案最主要是解决 认证协议的通用标准问题 ,因为要实现跨系统认证,各系统之间要遵循一定的接口协议。 OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的

    2023年04月09日
    浏览(45)
  • SpringSecurity+Oauth2+JWT

    快速入门 1. 创建基础项目 file == new == project == Spring Initializr ==next == web(Spring Web)、Security(Spring Security) ==一直下一步 2. 编写代码进行测试 创建controller static下创建login.html、main.html 3. 启动项目进行测试 访问http://localhost:8080/login.html 会进入SpringSecurity框架自带的登入页面 用户默认

    2024年02月12日
    浏览(44)
  • SpringSecurity OAuth2 配置 token有效时长

    1.这种方式配置之后,并没有生效 2.第二种方法时改数据库的配置,测试配置有效

    2024年02月09日
    浏览(50)
  • SpringSecurity+ Oauth2.0+JWT 0-1

    AuthorizationServer 需要继承AuthorizationServerConfigurerAdapter AuthorizationServerConfigurerAdapter源码 AuthorizationServerSecurityConfigurer:配置令牌端点(Token Endpoint)的安全约束 ClientDetailsServiceConfigurer:配置OAuth2客户端 AuthorizationServerEndpointsConfigurer:配置授权(authorization)以及令牌(token)的访

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包