本文以 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 單點登陸的方法:編程
- 初始化 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