單一登錄云:SAML和OpenId

當訪問不同組織擁有的不同應用程序時,每次從一個應用程序轉到另一個應用程序時都必須進行身份驗證。 不僅浪費時間,而且您還必須記住多個經常丟失的密碼。

單一登錄是一次認證的能力,并且能夠使用已認證的身份在應用程序之間無縫切換。

在Intranet內或在一個開發組織控制下的應用程序之間,可以通過生成一個sessionid并使用cookie傳遞它來輕松實現Web應用程序的單點登錄。 但是,這種解決方案是專有的,如果您需要離開Intranet并訪問云上的其他應用程序,則該解決方案將無法使用。 為了與云上的應用程序進行互操作,需要基于標準的解決方案。

一個相關的概念和好處是聯盟身份。 組織可以同意一個通用名稱來指代用戶。 用戶及其屬性只需要在一個地方創建,其他人可以參考此信息。

在此博客中,我們簡要檢查了兩種可用于在云上進行單點登錄的流行協議:SAML和OpenId。

OpenId

OpenId解決的問題是,作為用戶,您不必維護和向訪問的每個站點提供密碼。

您使用一個稱為OpenId提供程序的提供程序來維護密碼或其他身份驗證憑據。

您訪問的網站或應用程序需要您的身份證明,因此需要OpenId提供程序來驗證您所聲稱的身份。 這就是所謂的依賴方。

OpenId協議的基礎是:

1.您訪問Web應用程序(依賴方)并輸入OpenId

2.根據您的OpenId,依賴方確定誰是您的OpenId提供者。

3.依賴方將您的請求重定向到OpenId提供程序。

4.如果您已通過身份驗證,則將跳過此步驟。

OpenId提供程序通過詢問密碼或其他信息來對您進行身份驗證。 提供者警告您,依賴方正在請求有關您的信息。

5.該請求被重定向回依賴方,在此向您顯示您嘗試訪問的URL。

該協議不要求提供者或依賴方在任何地方進行注冊。 它使用簡單的HTTP請求和響應。 協議消息是純文本鍵值對。 該協議可與現代的“ Web20” AJAX風格的應用程序很好地配合使用。

OpenId協議起源于面向消費者的網站,例如Google,Twitter,Facebook等,并且在該協議中很流行。

在OpenId規范中描述了OpenId規范
openid4java中有一個OpenId的Java實現

SAML(安全性聲明標記語言)

SAML是基于XML的協議,可實現基于Web的身份驗證,授權和單點登錄。

SAML包括一個依賴方請求一個聲明,以及一個SAML提供者響應該聲明。

斷言示例包括:

  • 身份驗證斷言:在時間t使用某某方法驗證了該用戶。
  • 屬性聲明:此用戶具有標題超級管理者。
  • 授權聲明:該用戶有權刪除文件xyz.doc。

典型的SAML交互如下:

1.用戶嘗試訪問作為依賴方的URL或Web應用程序
2.依賴方創建一個SAML身份驗證請求。
3.依賴方將用戶瀏覽器重定向到SAML提供程序。 該請求中嵌入了SAML身份驗證請求。 4. SAML提供程序評估SAML請求并驗證用戶身份。 5. SAML提供向用戶瀏覽器返回SAML身份驗證響應。 6.瀏覽器將SAML響應轉發回依賴方。 7.依賴方驗證并解釋SAML響應。 8.如果響應表明身份驗證成功,則將用戶重定向到他最初嘗試訪問的URL。

SAML具有配置文件的概念。 交互因配置文件而異。 上面的交互是Web SSO配置文件。

SAML的起源更多于企業軟件,Web服務,B2B通信中,并且可以追溯到2000年代初期XML非常流行的時候。 實際上,SAML1.x僅具有SOAP綁定。

SAML規范位于SAML規范中
OpenSAML上有一個SAML實現

我應該使用哪種協議?

OpenId是一個更簡單的協議。 但具有SAML具有更多功能。

OpenId支持發現OpenId提供程序。 使用SAML通常需要昂貴的SAML項目。

OpenId僅支持服務提供商發起的SSO。 您轉到服務提供商的網站,他們需要身份驗證。 他們開始與OpenId提供程序進行對話。 SAML還可以支持身份提供商發起的SSO。 您已通過公司門戶的身份驗證。 貴公司有一個商務旅行合作伙伴旅行網站。 使用SAML,您可以從公司的門戶網站(SAML提供程序)轉到合作伙伴網站(依賴方),而無需重新認證。

SAML比OpenId更長。 SAML在企業中更受歡迎,而OpenId在面向消費者的應用程序中更受歡迎。

OpenId和SAML都依賴外部傳輸層安全協議(例如SSL)來保證協議消息的安全。

如果您要啟動一個新網站并希望接受來自其他流行網站(例如google或twitter)的用戶,則可以考慮使用OpenId。 但是,如果您是一家企業,并且希望通過身份驗證的用戶無需重新身份驗證即可訪問您的合作伙伴站點,則可能需要SAML。

總而言之,SAML是一種功能豐富的協議,在企業中更為流行。 OpenId是更簡單的協議,但有一些限制。

參考: 云的單一登錄: The Khangaonkar Report博客上的JCG合作伙伴 Manoj Khangaonkar的SAML和OpenId 。

相關文章 :

  • 使用Spring Security保護GWT應用程序
  • 在云中開發和測試
  • 使用Spring Security 3.1保護RESTful Web服務,第3部分
  • Apache Shiro:簡化應用程序安全性
  • 使用Spring Security 3.1的RESTful服務進行基本身份驗證和摘要身份驗證,第6部分
  • 2011年:軟件安全性和質量狀況

翻譯自: https://www.javacodegeeks.com/2011/12/single-sign-on-for-cloud-saml-openid.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374255.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374255.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python開發環境功能介紹_第一模塊 第3章 Python介紹與環境配置

python入門(全為重點) 1. 編程語言介紹 編程語言分類、總結 2. python介紹 3. 解釋器多版本共存 4. 運行python程序的兩種方式 5. 一個python程序運行的三個步驟(******) 6. 注釋 7. IED集成開發環境 3.1 編程語言分類之低級語言 這里的高級/低級指的是離…

如何判斷微信內置瀏覽器(JS PHP)

進行微信公眾賬號開發的時候,其中很大一塊是微站點的開發,我們需要知道當前的瀏覽器是微信內置的瀏覽器,那么如何判斷呢? 微信內置瀏覽器的 User Agent Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536…

用WPF做關于MEF 簡單學習記錄

寫在前面:下面學習所得多是從自http://www.cnblogs.com/comsokey/p/MEF1.html和http://www.cnblogs.com/yunfeifei/p/3922668.html兩位大神的文章里學到的,特別鳴謝!整理下是更大一方面是對自己知識的梳理,用詞用句不夠準確&#…

Log4j,Stat4j,SMTPAppender集成–匯總錯誤日志以發送太多電子郵件

我們的開發團隊希望在生產系統出現問題時盡快得到通知,這是一個每天為成千上萬的客戶提供服務的關鍵Java Web應用程序。 這個想法是讓它在出現太多錯誤時向我們發送電子郵件,這些錯誤通常表明數據庫,外部Web服務存在問題,或者應用…

C排序算法:(一)直接排序

最簡單的排序方法。 如果從大到小排序&#xff0c;那么從[0]元素開始&#xff0c;和后面的元素進行對比&#xff0c;如果后面元素大&#xff0c;則和[0]元素交換。 核心思想&#xff1a;選定基準元素&#xff0c;和其他元素對比。 #include <stdio.h>unsigned char buff…

數據庫抽象類PDOStatement對象使用

1.預處理語句中使用占位符,分為 索引方式 和 關聯方式 a.索引方式&#xff1a; $pdonew PDO($dns,$username,$password,$options); $sqlselect * from tests where username?,password?; $stmt$pdo->prepare($sql); $stmt->execute(array($username,$password)); b.關聯…

c語言 鏈表_C語言編程第22講——單向有序鏈表的C語言實現

1、單向有序鏈表的含義單向有序鏈表可以解析為四個名詞&#xff1a;表&#xff1a;一組元素&#xff1b;鏈表&#xff1a;表中的元素不是從前往后一個挨著一個&#xff0c;而是通過一個元素才能找到另一個元素&#xff1b;單向&#xff1a;表中的元素只能從前往后訪問&#xff…

Spring 3.1和Hibernate的持久層

1.概述 本文將展示如何使用Spring和Hibernate實現DAO 。 有關核心的Hibernate配置&#xff0c;請參閱有關帶??有Spring的Hibernate 3和Hibernate 4的文章。 2.沒有更多的春天模板 從Spring 3.0和Hibernate 3.0.1開始&#xff0c; 不再需要Spring HibernateTemplate來管理Hib…

C排序算法:(二)冒泡排序

冒泡排序就是從左至右比較相鄰的兩個數值大小&#xff0c;如果右側的數值較小&#xff0c;則交換兩個數值的位置&#xff0c;較大的數值就會像泡泡一樣一路向右漂浮。 #include <stdio.h>//small to big void Bubble_Sort(unsigned char *input_data, unsigned int inpu…

C語言之猜數游戲

#include<stdio.h>#include<stdlib.h>#include<time.h>int main(){ srand(time(0)); int count0,thought; int numrand()%1001; printf("%d\n",num); do { printf("請猜這個數在1-100之間\n"); scanf("%d",&thought); cou…

pythonturtle畫點的指令_簡述python的turtle繪畫命令及解釋

一 基礎認識 turtle庫是python的標準庫之一&#xff0c;它是一個直觀有趣的圖形繪制數據庫&#xff0c;turtle(海龜&#xff09;圖形繪制的概念誕生1969年。它的應用十分廣&#xff0c;而且使用簡單&#xff0c;只要在編寫python程序時寫上import turtle即可。 1.繪圖窗口設置命…

算法—振興中華(C語言版)

/* 標題: 振興中華小明參加了學校的趣味運動會&#xff0c;其中的一個項目是&#xff1a;跳格子。地上畫著一些格子&#xff0c;每個格子里寫一個字&#xff0c;如下所示&#xff1a;從我做起振我做起振興做起振興中起振興中華比賽時&#xff0c;先站在左上角的寫著“從”字的格…

OpenGL ES一些函數詳解(一)

glLoadIdentity和glMultMatrix glLoadIdentity的作用是將當前模型視圖矩陣轉換為單位矩陣&#xff08;行數和列數相同的矩陣&#xff0c;并且矩陣的左上角至右下角的連線上的元素都為1&#xff0c;其它元素都為0&#xff09;&#xff0c;這樣可以方便矩陣的乘法運算。 glMultMa…

忽略Java中的自簽名證書

我在職業生涯中遇到過幾次問題&#xff0c;就是我們有時希望允許自簽名證書用于開發或測試目的。 Google的快速搜索顯示了多年來無數Java開發人員遇到的麻煩。 根據確切的證書問題&#xff0c;您可能會收到類似以下內容之一的錯誤&#xff0c;盡管我幾乎肯定有其他表現形式&…

C排序算法:(三)插入排序

像打撲克牌一樣&#xff0c;每次摸一張牌&#xff0c;把牌插入正確位置。 #include <stdio.h>void Insert_Sort_Small_To_Big(unsigned char* input_data, unsigned int input_length) {int i 0, j 0;unsigned char temp 0;for (i 1; i < input_length; i){temp …

sqlserver中自定義函數+存儲過程實現批量刪除

由于項目的需要&#xff0c;很多模塊都要實現批量刪除的功能。為了方便模塊的調用&#xff0c;把批量刪除方法寫成自定義函數。直接上代碼。 自定義函數&#xff1a; ALTER FUNCTION [dbo].[func_SplitById] (str varchar(50),split varchar(10))--傳過來的id字符串 --分割的標…

c語言選擇排序_C語言——選擇排序

1 選擇排序&#xff08;5分&#xff09;題目內容&#xff1a;編寫選擇排序&#xff0c;要求排序過程調用函數實現&#xff0c;在主函數輸入n個數據&#xff0c;調用函數后&#xff0c;輸出排好序的元素輸入格式:輸入整型數n&#xff0c;并輸入n個整數&#xff0c;輸入數據用空格…

算法—巧排撲克牌(C語言)

/*小明剛上小學&#xff0c;學會了第一個撲克牌“魔術”&#xff0c;到處給人表演。魔術的內容是這樣的&#xff1a;他手里握著一疊撲克牌&#xff1a;A&#xff0c;2&#xff0c;....J&#xff0c;Q&#xff0c;K 一共13張。他先自己精心設計它們的順序&#xff0c;然后正面朝…

LeetCode Binary Tree Paths(簡單題)

題意&#xff1a;   給出一個二叉樹&#xff0c;輸出根到所有葉子節點的路徑。 思路&#xff1a; 直接DFS一次&#xff0c;只需要判斷是否到達了葉子&#xff0c;是就收集答案。 1 /**2 * Definition for a binary tree node.3 * struct TreeNode {4 * int val;5 * …

我的測試和代碼分析工具箱

上周&#xff0c;我們在LINEAS成立了一個“測試技能小組”&#xff0c;該小組用于交換有關測試的知識。 各種各樣的問題反復出現的一個問題是&#xff1a;有哪些工具可以測試和分析您的代碼&#xff1f; 因此&#xff0c;這是我對此的個人回答&#xff0c;按照我傾向于將其介紹…