当前位置: 首页 > 知识库问答 >
问题:

当前SpringBoot OAuth2方法

宿楚青
2023-03-14

我花了2天的时间阅读了SpringBoot OAuth2客户端的各种教程。每个人看起来都略有不同。此外,由于在给定的包中找不到几个类,因此它们都不起作用。

https://www.baeldung.com/spring-webclient-oauth2

https://www.baeldung.com/spring-security-5-oauth2-login#setup

https://spring.io/blog/2018/03/06/using-spring-security-5-to-integrate-with-oauth-2-secured-services-such-as-facebook-and-github

https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide ...

也许我同时也弄糊涂了。但我可以在本月的SpringBoot中使用一个关于如何正确实现OAuth2客户机的工作示例或文档。

我将感谢任何帮助链接或只是一个例子(POM版本)来实现这一点。

提前谢谢

格雷戈

共有2个答案

郭均
2023-03-14

您需要做四件简单的事情:

步骤1:创建Facebook应用程序ID

首先,您需要创建Facebook开发者帐户,并为OAuth身份验证创建Facebook应用程序。

然后获取新Facebook应用的应用ID和应用机密,用于项目配置。请注意,在localhost上进行测试时,不需要指定重定向URI。

步骤2:添加Spring启动OAuth2客户端依赖项

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>

步骤3:为Facebook配置Spring OAuth2属性

spring:
  application:
    name: spring-oauth2-security-example
security:
  oauth2:
    client:
      clientId: <client-id>
      clientSecret: <clientSecret>
      accessTokenUri: https://graph.facebook.com/oauth/access_token
      userAuthorizationUri: https://www.facebook.com/dialog/oauth
      tokenName: oauth_token
      authenticationScheme: query
      clientAuthenticationScheme: form
    resource:
      userInfoUri: https://graph.facebook.com/me

这是Facebook的特定设置,您只需要提供clientID(或App ID)和clientSecret或您的App密钥。当你创建应用程序时,这两者都可以在脸书开发者页面上找到。

步骤4:更新主类

@SpringBootApplication
@RestController
@EnableOAuth2Sso
public class SpringOauth2SecurityExampleApplication {

    @GetMapping("/")
    public String welcome(Principal principal) {
        Map<String, Object> details = (Map<String, Object>)
                ((OAuth2Authentication) principal).getUserAuthentication().getDetails();
        String userName = (String) details.get("name");
        return "Hi " + userName + " Welcome to my application !!";
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringOauth2SecurityExampleApplication.class, args);
    }

}

注意:需要注意的是,您需要将用于身份验证的endpointurl添加到Facebook上的“有效oAuth重定向url”设置中。因为oAuth只适用于特定的地址。在本例中,我们将在本地运行它,因此我将放置localhost:8080localhost:8080/login

步骤5:测试

转到localhost:8080,它将自动重定向到OAuth,因为您站点上的所有内容都被限制访问,您必须首先通过身份验证。

希望这对你有帮助!

仲孙钊
2023-03-14

我希望这个博客能帮助你

https://www.devglan.com/spring-security/spring-security-oauth2-user-registration https://waynestalk.com/en/spring-security-oauth2-google-signin-explained-en/

这些博客解释得很清楚

 类似资料:
  • 所以我正在尝试为我正在制作的一个游戏使用线程。我对这门学科很陌生,所以我可能理解不正确。我的问题是currentThread()方法如何在java API的Thread类中工作。API说“返回对当前执行的线程对象的引用”,但据我所知,多个线程同时运行。怎么可能只返回一个正在执行的线程呢?

  • 本文向大家介绍C++取得当前时间的方法,包括了C++取得当前时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++取得当前时间的方法,分享给大家供大家参考。 具体实现方法如下: 希望本文所述对大家的C++程序设计有所帮助。

  • 本文向大家介绍jquery获取当前日期的方法,包括了jquery获取当前日期的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jquery获取当前日期的方法。分享给大家供大家参考。 具体如下: PS:这里再为大家推荐几款时间及日期相关在线工具供大家参考使用: 在线日期/天数计算器: http://tools.jb51.net/jisuanqi/date_jisuanqi 在线日期计算器

  • 本文向大家介绍用Java显示当前方法名称,包括了用Java显示当前方法名称的使用技巧和注意事项,需要的朋友参考一下 包含由当前堆栈跟踪元素表示的执行点的当前方法名称由java.lang.StackTraceElement.getMethodName()方法提供。 演示此的程序如下所示- 示例 输出结果 现在让我们了解上面的程序。 该方法用于获取当前方法名称,该名称包含由当前堆栈跟踪元素表示的执行点

  • 本文向大家介绍jsp中获取当前目录的方法,包括了jsp中获取当前目录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jsp中获取当前目录的实现方法,分享给大家供大家参考。具体实现方法如下: 1、利用System.getProperty()函数获取当前路径: 2、使用File提供的函数获取当前路径: File.getCanonicalPath()和File.getAbsolutePat

  • 本文向大家介绍laravel 获取当前url的别名方法,包括了laravel 获取当前url的别名方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上路由为例 在模版中可以使用route('xiong.test')来获取该路由的真实地址。 在XiongTestController@index中,可以使用以下方法获取路由别名 输出结果为: 或者使用getName()方法直接获取别名 或者用