中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現易水公共組件的SSO功能

發布時間:2021-10-09 14:01:06 來源:億速云 閱讀:155 作者:柒染 欄目:大數據

如何實現易水公共組件的SSO功能,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

如今,隨著互聯網技術的發展,網絡用戶規模越來越大,假如公司的每一個應用都建立一個用戶系統,不僅極大的增加了開發的工作量,而且容易形成了信息孤島,用戶在使用公司的每個產品時都需要重復注冊一次。因此許多公司為了統一管理,建立了統一認證中心,其他的應用需要通過單點登錄即可獲取用戶信息,用戶登錄該公司的其他應用時也不需要在重新注冊,大大節省公司用戶導入成本,也提高用戶使用體驗。

對于單點登錄(SSO)而言,現在技術比較成熟,網上各種教程也比較多,但是很多文章都講述的不怎么全面,在這里基于spring security簡單明了的介紹下時如何實現單點登錄功能。

在使用單點登錄之前,需要先搭建一個認證中心,例如通過易水公共組件快速搭建一個自己的認證中心,也可以使用現在網絡上現成的認證中心,如 谷歌 或 github.

一 在pom文件中加入依賴

完整的pom文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.yishuifengxiao.sso-client</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-oauth3-client</artifactId>
        </dependency>

        <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.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
      

<!--        <dependency>-->
<!--            <groupId>org.springframework.security.oauth.boot</groupId>-->
<!--            <artifactId>spring-security-oauth3-autoconfigure</artifactId>-->
<!--            <version>2.2.0.RELEASE</version>-->
<!--        </dependency>-->

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

二 加入配置信息

在配置文件中加入以下信息

spring.security.oauth3.client.registration.yishui.provider=yishui
# 登錄界面上顯示的登錄類型的名字,可不填
spring.security.oauth3.client.registration.yishui.client-name=custom
# 該用戶對應的clientId
spring.security.oauth3.client.registration.yishui.client-id=zhiyubujian
# 該用戶對應的clientSecret
spring.security.oauth3.client.registration.yishui.client-secret=zhiyubujian
# 這里是定值為authorization_code,表示使用授權碼模式模式從授權服務器中獲取token
spring.security.oauth3.client.registration.yishui.authorization-grant-type=authorization_code
# 回調地址,應該和授權服務器中登記的回調地址一模一樣,否則會出錯,支持通配符,也可以想下面那樣配置為完整的地址
spring.security.oauth3.client.registration.yishui.redirect-uri={baseUrl}/login/oauth3/code/{registrationId}
#spring.security.oauth3.client.registration.yishui.redirect-uri=http://192.168.0.172:8006/oauth3/code

# 授權服務器的authorization地址
spring.security.oauth3.client.provider.yishui.authorization-uri=http://192.168.0.172:8000/oauth/authorize
# 授權服務器獲取token的地址
spring.security.oauth3.client.provider.yishui.token-uri=http://192.168.0.172:8000/oauth/token
# 授權服務器中獲取登錄用戶信息的地址
spring.security.oauth3.client.provider.yishui.user-info-uri=http://192.168.0.172:8000/me
#定值,必須配置,否則會出錯
spring.security.oauth3.client.provider.yishui.user-name-attribute=userAuthentication

注意:

上述配置中的yishui可以為任意值,但是一般最好為有標識意義的值,例如使用google賬號登錄時,可以進行如下配置:

spring:
  security:
    oauth3:
      client:
        registration:
          google:
            client-id: google-client-id
            client-secret: google-client-secret

三 配置啟動文件

@SpringBootApplication
@RestController
//@EnableOAuth3Sso
public class DemoApplication {

    @GetMapping("/me")
    public Authentication user(Authentication authentication) {

        return authentication;
    }


    @GetMapping("/")
    public String index(Model model,
                        @RegisteredOAuth3AuthorizedClient OAuth3AuthorizedClient authorizedClient,
                        @AuthenticationPrincipal OAuth3User oauth3User) {
        model.addAttribute("userName", oauth3User.getName());
        model.addAttribute("clientName", authorizedClient.getClientRegistration().getClientName());
        model.addAttribute("userAttributes", oauth3User.getAttributes());

        return "index";
    }

    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class, args);

    }

}

四 使用單點登錄

完成上述配置以后,我們就可以使用單點登錄功能了。

例如當我們想要訪問 http://localhost:8080/me 時,系統會重定向到到默認的登錄頁面 如何實現易水公共組件的SSO功能

注意:這里顯示的是默認的登錄頁面,如果用戶想要顯示自定義登錄界面,可以參見 易水公共組件里面的相關章節進行修改和美化。

點擊上面的登錄鏈接,會跳轉到授權服務器的登錄頁面

如何實現易水公共組件的SSO功能

在此頁面輸入用戶名和密碼登錄成功后,請求會跳轉到原始等請求地址

響應結果如下:

如何實現易水公共組件的SSO功能

看完上述內容,你們掌握如何實現易水公共組件的SSO功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sso
AI

泸定县| 互助| 周口市| 开鲁县| 右玉县| 柯坪县| 彭泽县| 朝阳县| 藁城市| 固始县| 栾川县| 浑源县| 石渠县| 错那县| 乌拉特后旗| 黄平县| 弥勒县| 黑水县| 孟连| 松桃| 泰兴市| 铜山县| 吕梁市| 高碑店市| 揭阳市| 咸丰县| 阳信县| 安化县| 开封市| 巴彦淖尔市| 澎湖县| 小金县| 靖安县| 岚皋县| 锦州市| 柞水县| 临江市| 临朐县| 明光市| 涟源市| 阿克陶县|