使用Spring Security 5.0和OIDC轻松构建身份验证

本文介绍如何使用Spring Security 5.0和Okta实现OAuth 2.0登录及OIDC用户信息获取。通过创建Spring Boot应用,设置OpenID Connect应用,了解Spring Security的现代密码编码等功能,实现轻松的身份验证流程。文中提供详细步骤,包括创建应用、添加身份验证、获取用户信息,并给出了相关资源链接以供深入学习。
摘要由CSDN通过智能技术生成

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。

Spring Security不仅是一个功能强大且可高度自定义的身份验证和访问控制框架,它还是保护基于Spring的应用程序的实际标准。 从前,Spring Security需要使用大量的XML来配置所有内容,但是那段日子已经过去了。 如今,Spring Security通过Spring的JavaConfig提供了更简单的配置。 如果您看一下我最近写的JHipster OIDC示例中的`SecurityConfiguration.java`类,您会发现它少于100行代码!

Spring Security 5.0可以解析400多个票证,并且具有许多新功能

今天,我将向您展示如何在Okta中使用OAuth 2.0登录支持。 我还将向您展示如何通过OpenID Connect(OIDC)检索用户的信息。

您知道Okta提供免费的开发人员帐户 ,每月最多有7,000个活跃用户,对吗? 这应该足以使您的杀手级应用破土动工。

Spring Security使使用OAuth 2.0进行身份验证变得非常容易。 它还提供了通过OIDC获取用户信息的功能。 请按照以下步骤了解更多信息!

什么是OIDC? 如果您不熟悉OAuth或OIDC,建议您阅读OAuth到底是什么 。 开放ID连接流涉及以下步骤:

  1. 发现OIDC元数据
  2. 执行OAuth流以获取ID令牌和访问令牌
  3. 获取JWT签名密钥并有选择地动态注册客户端应用程序
  4. 根据内置日期和签名在本地验证JWT ID令牌
  5. 根据需要使用访问令牌获取其他用户属性

创建一个Spring Boot应用

在浏览器中打开start.spring.io 。 Spring Initialzr是一个站点,可让您快速轻松地创建新的Spring Boot应用程序。 将Spring Boot版本(在右上角)设置为2.0.0.M7 。 输入组和工件名称。 从下面的屏幕快照中可以看到,我选择了com.okta.developeroidc 。 对于依赖项,选择WebReactive WebSecurityThymeleaf

单击“ 生成项目” ,下载zip,将其展开到硬盘上,然后在您喜欢的IDE中打开该项目。 使用./mvnw spring-boot:run运行该应用程序, ./mvnw spring-boot:run将提示您登录。

Spring Security 4.x通过基本身份验证而不是登录表单提示您,因此这与Spring Security 5有所不同。

Spring Security启动程序创建一个默认用户,其用户名为“ user”,并且密码每次启动应用程序时都会更改。 您可以在终端中找到该密码,类似于以下密码。

Using default security password: 103c55b4-2760-4830-9b
好的,让我来给你详细介绍下 Spring Security 如何集成 OpenID Connect。 1. 添加 Spring SecuritySpring Boot Security Starter 依赖 在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-client</artifactId> </dependency> ``` 2. 配置 Spring Security 来启用 OpenID Connect 认证 在 Spring Boot 应用程序的配置类上添加 `@EnableWebSecurity` 注解,并且继承 `WebSecurityConfigurerAdapter` 类。同时,重写 `configure(HttpSecurity http)` 方法来配置 HTTP 安全性。 在 `configure(HttpSecurity http)` 方法中,我们需要配置 Spring Security 来启用 OpenID Connect 认证。配置如下: ```java @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .anyRequest().authenticated() .and() .oauth2Login() .and() .oauth2Client(); } ``` 这个配置中,我们要求所有的请求都需要经过身份验证,然后我们启用了 OAuth 2.0 登录和客户端支持。这里使用的是默认配置,如果你需要自定义一些配置,可以参考 Spring SecuritySpring Boot Security Starter 的文档。 3. 配置 OpenID Connect 提供商的信息 在 `application.yml` 或者 `application.properties` 文件中配置 OpenID Connect 提供商的信息。这里以 Google 为例,你需要提供以下信息: ```yaml spring: security: oauth2: client: registration: google: clientId: <your-client-id> clientSecret: <your-client-secret> redirectUriTemplate: "{baseUrl}/login/oauth2/code/{registrationId}" scope: - openid - email - profile provider: google: issuerUri: https://accounts.google.com userInfoUri: https://www.googleapis.com/oauth2/v3/userinfo ``` 这个配置中,我们配置了 Google 的 OpenID Connect 提供商信息。其中 `clientId` 和 `clientSecret` 分别是你注册应用程序时获得的客户端 ID 和客户端密码。`redirectUriTemplate` 是指定用户在登录成功后重定向到的 URL。`scope` 是需要请求的权限范围。`issuerUri` 是 OpenID Connect 提供商的 URL,`userInfoUri` 是获取用户信息的 URL。 4. 创建一个登录页面和一个注销端点 最后,我们需要创建一个登录页面和一个注销端点。可以使用 Spring Boot 提供的默认登录页面,也可以自定义。 为了让用户注销,我们需要创建一个注销端点,这个端点可以使用 Spring Boot 提供的默认端点,也可以自定义。 ```java @GetMapping("/logout") public String logout(HttpServletRequest request, HttpServletResponse response) throws Exception { new SecurityContextLogoutHandler().logout(request, response, SecurityContextHolder.getContext().getAuthentication()); return "redirect:/"; } ``` 这个方法会清除用户的身份验证信息,并且重定向到主页。 到这里,你就成功地将 Spring Security 集成到你的应用程序中,并且启用了 OpenID Connect 认证。如果你有其他问题或需要更多信息,可以随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值