Spring Security 5 集成 Authing OIDC 單點登陸指南

本文以 Spring 生態中用於提供認證及訪問權限控制的 Spring Security 5 爲例,詳細介紹 Spring Security 5 如何接入 Authing OIDC。git

Spring Security 是一個提供安全訪問控制解決方案的安全框架。它提供了一組能夠在 Spring 應用上下文中配置的 Bean,充分利用了 Spring IoC,DI(控制反轉 Inversion of Control, DI:Dependency Injection 依賴注入)和 AOP(面向切面編程)功能,爲應用系統提供聲明式的安全訪問控制功能,加強了企業系統的安全性,也減輕了編寫大量重複代碼的負擔。github

Spring Security 的主要功能主要包括:spring

  • 認證
  • 受權
  • 攻擊防禦

以 Authing 提供的 OIDC 服務爲例,下面將詳細介紹使用 Spring Security 5 集成 Authing OIDC 單點登陸的方法:編程

  1. 初始化 Spring boot 項目  

在瀏覽器中打開 https://start.spring.io,輸入項目基本信息,並添加 Web, Reactive Web, Security, 和 Thymeleaf 依賴。瀏覽器

下載建立好的項目,在 IDEA 中打開並等待依賴安裝完成,而後運行 ./mvnw spring-boot:run,在項目運行後,使用瀏覽器訪問 http://localhost:8080 會自動跳轉到 /login,能夠看到頁面上出現了一個基礎的登陸表單,說明項目初始化成功。安全

2. 配置 Authingapp

首先要在 Authing 註冊一個帳號,而後進入控制檯,點擊左側的 應用 菜單項,在右側會看到一個默認建立好的應用。框架

點擊 應用配置,上方能夠看到 App ID、App Secret 和 Issuer url,請妥善保存,以後會用到這些信息。 而後須要在回調地址處添加 http://localhost:8080/login/oauth2/code/authing,以後的選項與下圖中保持一致。ide

點擊表單下面的 高級選項,在新出現的表單中找到並點擊 隨機生成簽名密鑰 按鈕,而後點擊最下面的 肯定 來保存全部改動。spring-boot

3.配置 Spring Security

回到項目中,找到 src/main/resources/application.properties,將其重命名爲 application.yml,並添加以下內容:

spring:
  thymeleaf:
    cache: false
  security:
    oauth2:
      client:
        registration:
          authing:
            client-id: {clientId}
            client-secret: {secret}
            redirect-uri: '{baseUrl}/login/oauth2/code/{registrationId}'
            client-authentication-method: post
            scope:
              - openid
              - profile
        provider:
          authing:
            issuer-uri: {issuerUrl}
            user-name-attribute: username

須要將這裏的 {clientId}、{secret}、{issuerUrl} 替換成上一步 應用配置 中的實際信息。 接下來須要在 pom.xml 中添加一些依賴並更新:

<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.thymeleaf.extras</groupId>
   <artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>

一切準備就緒了,如今啓動項目並訪問 http://localhost:8080,便可看到 Authing 登陸窗口。

Spring Security 默認會保護首頁,在訪問首頁時會進行認證,未認證的訪問請求會跳轉到 /login。 註冊並登陸後,會跳轉回首頁,此時能夠看到頁面上的歡迎語顯示了當前登陸用戶的用戶名。

想要了解更全面的示例項目,請點擊 https://github.com/Authing/authing-spring-oidc-demo

獲取更多資訊,請訪問 Authing 官網 https://authing.cn

相關文章
相關標籤/搜索