Link Search Menu Expand Document

Spring Boot快速与XAuth集成

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

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

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

准备工作

前提条件:

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

请求的示例

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

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

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

创建一个XAuth Web应用

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

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

CreateWebApp

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

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

CreateWebApp

Step 3.【保存】后,XAuth将为该应用生成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:在注册时,XAuth提供的租户的二级域名前缀

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

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

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

验证是否集成成功

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

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

image.png

2.单击XAuth链接,登录

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

image.png

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

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

image.png

总结

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

参考

OIDC 文档