Link Search Menu Expand Document

Spring Boot快速与OneAuth集成

  1. 准备工作
  2. 请求的示例
  3. 创建一个OneAuth Web应用
  4. 创建和配置Spring Boot应用
    1. 添加依赖项到pom.xml
    2. 重命名application.properties
  5. 验证是否集成成功
  6. 总结
  7. 参考

本教程将介绍如何使用 OneAuth 的统一身份验证服务,它能让我们在 Spring 项目中轻松处理用户数据。

本节介绍如何使用Spring Boot快速与OneAuth集成,将OneAuth作为WEB应用程序的用户存储库并实现用户登录。

准备工作

前提条件:

  • 已经具备了OneAuth的组织账户。如果没有?免费创建
  • 具备基础的WEB应用程序的开发经验
  • 已有或新建的Web应用程序或项目,需要集成认证流程
  • 或者可以下载教程的代码示例 Github 仓库,基于MIT协议,可以免费/商业使用。

请求的示例

请求授权的的示例,类似如下

https://{yourSubDomain}.oneauth.cn/oauth/v1/authorize?response_type=code&client_id= CLIENT_ID&redirect_uri=CALLBACK_URL&scope=read

以下配置将在OneAuth控制台完成,配置CALLBACK_URL 和生成CLIENT_ID

创建一个OneAuth Web应用

Step 1. 登录OneAuth组织账户的控制台添加应用

选择【应用】-【应用】-创建应用认证方式选择OIDC,应用类型选择Web应用,点击【下一步】

CreateWebApp

Step 2. 填写应用的登录重定向地址,http://localhost:8000/login/oauth2/code/oneauth

当用户成功认证后,OIDC 授权服务器向Client返回的redirect_uri由该地址指定。详细参考OIDC 授权码模式

CreateWebApp

Step 3.【保存】后,OneAuth将为该应用生成Clinet IDClient Secret,后续在Java Spring Boot的配置中会用到这两个参数值CreateWebApp

创建和配置Spring Boot应用

如果您没有现有应用程序,或者对构建应用程序不熟悉,请参考以下资料:构建Spring Boot应用程序的基础知识,Spring Boot

或者,如果您想快速开始,只需下载一个应用示例,请下载我们Spring Boot示例

添加依赖项到pom.xml

添加后,Spring Security 5的OAuth配置才能正确初始化。

<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.security</groupId> 
	<artifactId>spring-security-config</artifactId>
</dependency> 
<dependency>
	<groupId>org.springframework.security</groupId> 
	<artifactId>spring-security-oauth2-client</artifactId>
</dependency> 
<dependency> 
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-oauth2-jose</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

重命名application.properties

将src/main/resources/application.properties重命名为src/main/resources/application.yml

在下面的代码中填写:

yourSubDomain:在注册时,OneAuth提供的租户的二级域名前缀

ClientID: 填写创建应用时,Step 2过程中OneAuth管理后台生成的Client ID

Secret: 填写创建应用时,Step 2过程中OneAuth管理后台生成的Client Secret

server:
  port: 8000
spring:
  thymeleaf:
    cache: false
  security:
    oauth2:
      client:
        registration:
          oneauth:
            client-name: oneauth
            client-id: {clientId}
            client-secret: {clientSecret}
            redirect-uri: '{baseUrl}/login/oauth2/code/{registrationId}'
            client-authentication-method: post
            scope:
              - openid
              - profile
      provider:
       oneauth:
        issuer-uri: https://{yourSbuDomain}.oneauth.cn/oauth/v1
        user-name-attribute: name

验证是否集成成功

1.重新启动您的应用程序,并访问

浏览器再次导航到http://localhost:8000 ,您会看到一个oneauth的链接,单击该链接可以单击oneauth登录。

image.png

2.单击oneauth链接,登录

点击后,您应该会看到一个登录屏幕。

image.png

3. 输入用户名和密码,认证完成后跳转回应用

输入用于创建帐户的凭据,登录后应该会看到类似以下的屏幕。

image.png

总结

我们通过 Spingboot 构建了一个简单的应用,利用Open ID Connect 协议并对接 OneAuth 提供的身份服务,实现了保护我们特定路由的方法。

参考

OIDC 文档