欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

SP向IDP發(fā)出SAML身份認(rèn)證請求消息,來請求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庫

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ù)器的請求地址寫到idp和sp的singleSignOnService,將登錄后跳轉(zhuǎn)的地址寫到sp的entityId和assertionConsumerService,將登出認(rèn)證服務(wù)器的地址和登錄后要跳轉(zhuǎn)的地址寫到sp和idp的singleLogoutService

2.使用python3-saml庫

以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ù)器會發(fā)送POST請求將用戶名等信息通過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é)

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

相關(guān)文章

  • 關(guān)于python?DataFrame的合并方法總結(jié)

    關(guān)于python?DataFrame的合并方法總結(jié)

    這篇文章主要介紹了關(guān)于python?DataFrame的合并方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python如何將兩個數(shù)據(jù)表中的對應(yīng)數(shù)據(jù)相加

    python如何將兩個數(shù)據(jù)表中的對應(yīng)數(shù)據(jù)相加

    這篇文章主要介紹了python如何將兩個數(shù)據(jù)表中的對應(yīng)數(shù)據(jù)相加問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 一文理解Python命名機(jī)制

    一文理解Python命名機(jī)制

    這篇文章主要介紹的是Python的命名機(jī)制,文章回先提出問題,然后根據(jù)問題逐步解析,感興趣的小伙伴可以參考一下,希望對你有所幫助
    2021-10-10
  • VTK與Python實(shí)現(xiàn)機(jī)械臂三維模型可視化詳解

    VTK與Python實(shí)現(xiàn)機(jī)械臂三維模型可視化詳解

    這篇文章主要介紹了VTK與Python實(shí)現(xiàn)機(jī)械臂三維模型可視化詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • python 如何使用find和find_all爬蟲、找文本的實(shí)現(xiàn)

    python 如何使用find和find_all爬蟲、找文本的實(shí)現(xiàn)

    這篇文章主要介紹了python 如何使用find和find_all,爬蟲、找文本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python開發(fā)一個功能齊全的IM聊天工具(附實(shí)例代碼)

    Python開發(fā)一個功能齊全的IM聊天工具(附實(shí)例代碼)

    即時通訊(IM)工具現(xiàn)在已經(jīng)很常見了,從簡單的文本聊天到文件傳輸、音視頻通話,IM 工具功能豐富,那么,本文使用Python開發(fā)一個基礎(chǔ)的IM聊天工具,包括:客戶端和服務(wù)端架構(gòu)、實(shí)時消息發(fā)送與接收、多用戶聊天支持、一個簡單的圖形用戶界面(GUI)
    2024-12-12
  • 深入理解python中的閉包和裝飾器

    深入理解python中的閉包和裝飾器

    下面小編就為大家?guī)硪黄钊肜斫鈖ython中的閉包和裝飾器。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 利用python進(jìn)行矩陣運(yùn)算實(shí)例代碼

    利用python進(jìn)行矩陣運(yùn)算實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用python進(jìn)行矩陣運(yùn)算的相關(guān)資料,Numpy是Python編程語言中的一個核心庫,專門用于處理多維數(shù)據(jù)和矩陣運(yùn)算,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • 解決使用pip安裝報(bào)錯:Microsoft?Visual?C++?14.0?is?required.

    解決使用pip安裝報(bào)錯:Microsoft?Visual?C++?14.0?is?required.

    對于程序員來說,經(jīng)常pip安裝自己所需要的包,大部分的包基本都能安裝,但是總會遇到包安裝不了的問題,下面這篇文章主要給大家介紹了關(guān)于如何解決使用pip安裝報(bào)錯:Microsoft?Visual?C++?14.0?is?required.的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 使用Python加密和解密PDF文件

    使用Python加密和解密PDF文件

    在日常工作和生活中,保護(hù)PDF文件的隱私和安全至關(guān)重要,Python提供了一些強(qiáng)大的庫,使得加密和解密PDF文件變得相對簡單,本文將詳細(xì)介紹如何使用PyPDF2庫來加密和解密PDF文件,需要的朋友可以參考下
    2025-03-03

最新評論