最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3如何使用saml2.0協(xié)議接入SSO

 更新時(shí)間:2024年11月25日 09:12:20   作者:yangjiajia123456  
SAML是一種用于在不同系統(tǒng)之間傳輸安全聲明的XML框架,通過IDP和SP之間的重定向訪問,SP向IDP請(qǐng)求用戶身份認(rèn)證,IDP驗(yàn)證用戶身份后返回SAML應(yīng)答,本文以python3和python3-saml庫(kù)為例,介紹了如何接入公司SSO系統(tǒng),包括配置和處理登錄和登出請(qǐng)求

python3使用saml2.0協(xié)議接入SSO

SAML(Security Assertion Markup Language)是一個(gè) XML 框架,也就是一組協(xié)議,可以用來傳輸安全聲明。

比如,兩臺(tái)遠(yuǎn)程機(jī)器之間要通訊,為了保證安全,我們可以采用加密等措施,也可以采用 SAML 來傳輸,傳輸?shù)臄?shù)據(jù)以 XML 形式,符合 SAML 規(guī)范,這樣我們就可以不要求兩臺(tái)機(jī)器采用什么樣的系統(tǒng),只要求能理解 SAML 規(guī)范即可。

其核心是: IDP和SP通過用戶的瀏覽器的重定向訪問來實(shí)現(xiàn)交換數(shù)據(jù)。

SP向IDP發(fā)出SAML身份認(rèn)證請(qǐng)求消息,來請(qǐng)求IDP鑒別用戶身份;IDP向用戶索要用戶名和口令,并驗(yàn)證其是否正確,如果驗(yàn)證無誤,則向SP返回SAML身份認(rèn)證應(yīng)答,表示該用戶已經(jīng)登錄成功了,此外應(yīng)答中里還包括一些額外的信息,來卻確保應(yīng)答被篡改和偽造。

本人在網(wǎng)上找了一張圖片,感覺比較好的說明了saml2.0的SSO認(rèn)證的過程:

本人是python研發(fā)工程師,所以以python3為例,說明我是如何接入我們公司的SSO的。

本人使用的是python3-saml庫(kù)

1.準(zhǔn)備所需要的json數(shù)據(jù)

req = {
        "idp": {
            "entityId": data["sso"]["login-url"],
            "singleSignOnService": {
                "url": data["sso"]["login-url"]
            },
            "singleLogoutService": {
                "url": "{0}?service={1}".format(
                    data["sso"]["logout-url"], url)
            }
        },
        "sp": {
            "entityId": url,
            "singleSignOnService": {
                "url": data["sso"]["login-url"]
            },
            "assertionConsumerService": {
                "url": url
            },
            "singleLogoutService": {
                "url": "{0}?service={1}".format(
                    data["sso"]["logout-url"], url)
            },
            "NameIDFormat": "urn:oasis:names:tc:SAML:2.0:assertion"
        }
    }

將登錄認(rèn)證服務(wù)器的請(qǐng)求地址寫到idp和sp的singleSignOnService,將登錄后跳轉(zhuǎn)的地址寫到sp的entityId和assertionConsumerService,將登出認(rèn)證服務(wù)器的地址和登錄后要跳轉(zhuǎn)的地址寫到sp和idp的singleLogoutService

2.使用python3-saml庫(kù)

以django為例演示登錄

def login(request):
    one_login = OneLogin_Saml2_Settings(req)
    login = OneLogin_Saml2_Authn_Request(one_login)
    result = quote(login.get_request())
    return HttpResponseRedirect(result)

之后跳轉(zhuǎn)至SSO的統(tǒng)一登錄界面,然后輸入用戶名和密碼進(jìn)行驗(yàn)證。

校驗(yàn)通過后,登錄認(rèn)證服務(wù)器會(huì)發(fā)送POST請(qǐng)求將用戶名等信息通過base64加密的方式傳給你,你解析做處理。

以django為例演示登出

def logout(reqeust):
    one_login = OneLogin_Saml2_Settings(req)
    logout_request = OneLogin_Saml2_Logout_Request(one_login)
    parameters = {'SAMLRequest': logout_request.get_request()}
    uri = logout_url + '?service={}'.format(domain + address)
    logout_url = OneLogin_Saml2_Utils.redirect(uri, parameters, True)
    return HttpResponseRedirect(logout_url)

之后跳回SSO統(tǒng)一登錄界面。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python四大模塊文件管理介紹

    Python四大模塊文件管理介紹

    我們可以使用python來操作文件,比如讀取文件內(nèi)容、寫入新的內(nèi)容等,本文主要介紹了Python IO文件管理的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Python基礎(chǔ)之import導(dǎo)入模塊并調(diào)用其函數(shù)的完整指南

    Python基礎(chǔ)之import導(dǎo)入模塊并調(diào)用其函數(shù)的完整指南

    在Python編程中,import語(yǔ)句是實(shí)現(xiàn)模塊化編程的核心工具之一,本文全面介紹了Python中import語(yǔ)句的使用方法和模塊化編程的重要性,希望對(duì)大家有所幫助
    2026-06-06
  • python如何根據(jù)x軸、y軸坐標(biāo)在坐標(biāo)軸里畫出曲線圖

    python如何根據(jù)x軸、y軸坐標(biāo)在坐標(biāo)軸里畫出曲線圖

    這篇文章主要介紹了python如何根據(jù)x軸、y軸坐標(biāo)在坐標(biāo)軸里畫出曲線圖問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python腳本實(shí)現(xiàn)下載合并SAE日志

    Python腳本實(shí)現(xiàn)下載合并SAE日志

    這篇文章主要介紹了Python腳本實(shí)現(xiàn)下載合并SAE日志,本文講解了代碼編寫過程,然后給出了完整代碼,需要的朋友可以參考下
    2015-02-02
  • python實(shí)現(xiàn)FTP服務(wù)器服務(wù)的方法

    python實(shí)現(xiàn)FTP服務(wù)器服務(wù)的方法

    本篇文章主要介紹了python實(shí)現(xiàn)FTP服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • python交換兩個(gè)變量的值方法

    python交換兩個(gè)變量的值方法

    今天小編就為大家分享一篇python交換兩個(gè)變量的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 詳解appium自動(dòng)化測(cè)試工具(monitor、uiautomatorviewer)

    詳解appium自動(dòng)化測(cè)試工具(monitor、uiautomatorviewer)

    這篇文章主要介紹了詳解appium自動(dòng)化測(cè)試工具(monitor、uiautomatorviewer),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 如何利用PyQt5美化你的GUI界面

    如何利用PyQt5美化你的GUI界面

    python的腳本開發(fā)簡(jiǎn)單,有時(shí)候只需幾行代碼就能實(shí)現(xiàn)豐富的功能,而且python本身是跨平臺(tái)的,所以深受程序員的喜愛,下面這篇文章主要給大家介紹了關(guān)于如何利用PyQt5美化你的GUI界面的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Vue中自定義指令的三個(gè)常用方法小結(jié)

    Vue中自定義指令的三個(gè)常用方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了Vue中自定義指令的三個(gè)常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解一下
    2024-02-02
  • Python跨文件調(diào)用函數(shù)的五種實(shí)用方法

    Python跨文件調(diào)用函數(shù)的五種實(shí)用方法

    在開發(fā)Python項(xiàng)目時(shí),90%的開發(fā)者都會(huì)遇到這樣的困境:代碼越寫越長(zhǎng),功能越來越亂,最后變成難以維護(hù)的"意大利面條式代碼",本文將手把手教你通過模塊化編程,讓代碼結(jié)構(gòu)清晰、可維護(hù)性強(qiáng),并深入解析5種跨文件調(diào)用函數(shù)的實(shí)用方法,需要的朋友可以參考下
    2025-05-05

最新評(píng)論

乌鲁木齐县| 海口市| 巴马| 英德市| 佳木斯市| 从化市| 永福县| 尉犁县| 彰化市| 隆回县| 郎溪县| 公安县| 冀州市| 昭觉县| 荥阳市| 林甸县| 昭通市| 稷山县| 桐梓县| 桐乡市| 张掖市| 建湖县| 黄平县| 黑龙江省| 廉江市| 镇沅| 日照市| 临邑县| 安化县| 聂拉木县| 广水市| 仙居县| 靖安县| 沙洋县| 全椒县| 贵港市| 新安县| 平阴县| 东乌珠穆沁旗| 赤城县| 海兴县|