基於OpenAM系列的SSO----基礎

來源:互聯網
上載者:User

標籤:

OpenAM簡介:OpenAM是一個開源的訪問管理、授權服務平台。由ForegeRock公司發起。OpenAM前身為OpenSSO,由SUN公司建立,現在屬於Oracle。

本文在OpenAM 13版的Getting started With OpenAM文檔上進行描述和總結。

在這個文檔中你將瞭解如何使用OpenAM 和 Web策略代理 (policy agent)來管理一個網頁的訪問。

  第一章:利用OpenAM對一個網站進行保護   1.1 關於OpenAMOpenAM 將“控制訪問”(access control)實現聚焦在處理驗證(authentication)和授權(authorization)兩個方面。“驗證”是對個體身份的鑒別,例如,驗證使用者名稱、密碼等身份資訊。“授權”既授予通過驗證後的使用者對一些資源(圖片、URL等)的訪問權。  關於驗證OpenAM中定義了一條"驗證鏈結"(authentication chain)來對使用者身份資訊進行驗證,“驗證鏈結”由單個或多個驗證模組(authentication module)組成。這些模組分別於身份資訊倉儲(identity repositories)串連,身份資訊倉儲儲存了使用者的資訊並提供驗證服務。身份資訊倉儲包含了LDAP目錄,關係型資料庫,RADIUS(Remote Authentification Dial in User Service) , Windows授權,one-time 密碼服務(OTP),和一些其他的訪問管理系統。 “驗證鏈結”的意義:將不同的驗證服務串連在一起,為一些敏感資源提供更強的保護。還可以實現當使用者成功登陸後記住使用者的登陸裝置、當使用者登陸環境不正常時提供額外的驗證要求等。本文由於是入門文檔,所以採用了OpenAM中內建預設的身份資訊倉儲和驗證鏈結。  關於授權OpenAM對授權資訊進行了集中化管理(centralize authorization),這使得存取原則(access policy)與受保護的資源分離。與在web應用(受保護的)代碼中嵌入存取原則不同,OpenAM在web應用部署的web伺服器上(httpd,tomcat等)上安裝一個策略代理(policy agent,下文簡稱PA)來執行OpenAM的驗證結果。OpenAM做出使用者驗證判斷結果(允許或拒絕使用者訪問某資源),交給PA來執行。 接下來,將安裝OpenAM,建立一個策略(policy),安裝一個策略代理(policy agent )及在一台Web伺服器上實現對一個頁面的訪問驗證。  1.2  需要安裝的軟體 
  1. JDK(OpenAM是一個Java web 程式)
  2. Apache HTTP server(本文中存取控制的web應用部署在http server上)
  3. Apache Tomcat 
  4. OpenAM 核心包 (OpenAM的主web程式)
  5. OpenAM Apache Policy Agent (安裝在Apache HTTP server上,對使用者的請求進行解析並執行OpenAM做出的使用者驗證判斷結果)
  1.3 安裝過程 (本文僅討論在CentOS下的安裝) a. 修改 hosts檔案OpenAM 保護Web資源時, 需要你使用完整網域名稱(fully qualified domain names)這是因為OpenAM 使用cookie來跟蹤單點登入(Single Sign-On)的會話,根據完整的伺服器名和域來識別cookies。 在這裡我們通過修改hosts檔案在一台伺服器上實現兩個不同的訪問網域名稱。註:本文檔是搭建一個簡單的測試環境,所以OpenAM和web應用被放在一個server上。openam.example.com是OpenAM的網域名稱,而www.example.com是Web應用的網域名稱。 b. 安裝Apache HTTP server安裝開發工具OpenAM web 策略登代理需要Apache 1.3以上,這裡推薦2.2.9以上的版本安裝 Apache HTTP server  $ yum install httpd修改httpd設定檔,使伺服器名稱為 www.example.com,將連接埠改為8000。 啟動httpd:service httpd start訪問URL: http://www.example.com:8000 看是否安裝成功。 c.安裝Tomcat(略)安裝完成啟動後訪問 http://openam.example.com:8080看是否成功。 d.安裝OpenAM從 OpenAM上下載 OpenAM企業版的.war檔案。https://backstage.forgerock.com/#!/downloads/OpenAM/OpenAM%20Enterprise/13.0.0/OpenAM%2013#list     將.war檔案部署到Tomcat下 訪問 http://openam.example.com:8080/openam/ 看是否成功。   點擊首頁上的Create Default Configuration,同意協議。 設定預設使用者(amAdmin)的密碼為password,預設策略代理(UrlAccessAgent)的密碼為secret12,點擊Create Configuration進入配置OpenAM。  注意:以上密碼僅供這次測試用。amAdmin是OpenAM的管理員,擁有對OpenAM配置的一切控制權。在這篇文檔中 UrlAccessAgent並未用到。配置的管理員是超級使用者。 點擊Proceed to Login,用amAdmin身份登入,成功後將進入 Realm 頁面。OpenAM完成配置後,將自動在使用者的home目錄下建立~/openam/(/root/openam/)檔案夾,裡面含有Openam的配置資訊,整合的OpenDJ目錄伺服器。檔案夾名字與伺服器執行個體的名字相同(server instance),此外還有一個隱藏檔案夾 ~/.openamcfg/,(/root/.openamcfg/)其中包含了OpenAM的開機檔案,如果你損壞了OpenAM的設定檔,或者想重新安裝OpenAM,最快的解決方案是關閉tomcat,刪除這兩個檔案夾,重新設定OpenAM。 目前為止,OpenAM主伺服器和OpenAM主機都配置完成。e. 在OpenAM配置一個策略策略(policy)是OpenAM驗證使用者並賦予使用者權利的根據。根據以下步驟將建立一個策略,賦予所有通過驗證使用者,在之前配置的Apache HTTP 首頁上行使HTTP GET的權利。 1. 開啟OpenAM 控制台,在Realms頁面上選擇根域(Top level Realm)。   OpenAM將身份(identities),策略 (policies),策略代理資訊(policy agent profiles)整合到realms裡進行掛曆。 2. 點擊 Authorization > Polices > iPlanetAMWebAgentService > Add A New Policy3. 在New Policy頁面上,輸入以下資訊:     a. 名稱:輸入”Authenticated users can get Apache HTTP home page”供本次測試     b. 描述:輸入”This policy lets users who have authenticated to OpenAM access to the Apache home page."供本次測試     c. 資源類型:點擊下拉框,選擇”URL”供本次測試     d. 資源:在下拉框中選中”*://*:*/*”,然後輸入資源URL:http://www.example.com:8000/*,然後點擊 Add點擊Create 儲存設定。 4.在policy頁面上點擊Actions tab,輸入以下資訊     a. 在action 下拉框上選中 GET,點擊Add action     b. 在action 下拉框上選中POST,點擊Add action     c. 點擊 Save Changes5. 在policy頁面上點擊Subjects,輸入以下資訊     a.選擇 All of ..     b. 在Type Section上點擊Edit標識,在下拉框中選中Authenticated Users,然後點擊checkmark。     c. 點擊 save changes  f. 建立web 策略代理簡介(policy agent profile)     OpenAM 儲存策略代理的profile預設是”集中式”(centralized)的,既儲存在openam server端,而不是policy agent所在web容器。     策略代理(policy agent)在web應用所在容器上的安裝和啟動過程中,通過OpenAM server中設定的策略代理profile,得到相應的配置資訊。管理員在OpenAM後台中修改profile的配置,策略代理端也能同步更新。      1. 在OpenAM控制台上,點擊Realms > Top Level Realm > Agents >Web,然後點擊New 在 Agents table      2. 輸入以下資訊          Name : WebAgent          Password: password          Configuration: Centralized          Server URL: http://openam.example.com:8080/openam          Agent URL:  http://www.example.com:8000            3. 點擊Create 儲存 profile資訊.      g. 安裝OpenAM Web 策略代理 ( policy agent)          OpenAM 策略代理是OpenAM中定義的策略的實施者,判斷使用者是否對請求的資源具有存取權限是由OpenAM根據使用者資訊(HTTP cookie中的SSO token)及設定好的策略做出決定。         策略代理在Apache HTTP Server中以 Library的形式運行,當Apache HTTP Server啟動的時候,它被載入。當請求到來,策略代理將使用者重新導向到OpenAM進行身分識別驗證或者向OpenAM請求使用者授權結果。 1. 根據Apache HTTP Server的版本,在下載頁面上下載OpenAM policy agent。    這裡選擇 3.3.0版本。 2.建立密碼檔案,當代理安裝器(agent installer)第一次串連OpenAM時讀取。(密碼等於openam端設定的agent profile密碼) 3. 查看OpenAM 伺服器 URL,保證OpenAM正在運行     http://openam.example.com:8080/openam 4. 停止Apache HTTP Server    $  service httpd stop 5. 安裝 策略代理     解壓下載的zip包,並進入檔案夾中的bin目錄     $ cd /path/to/web_agents/apache22_agent/bin      運行agentadmin指令,輸入準確的資訊     $ ./agentadmin ——instal ——acceptLicense        6. 啟動 Apache HTTP Server,安裝完成  1.4 驗證 1.     登出 OpenAM控制台2.     瀏覽 http://www.example.com:8000        此時,策略代理將攔截你對上頁面的請求,如果你的瀏覽器中並沒有一個包含了OpenAM session的cookie,因此你將會被重新導向到OpenAM,進行身分識別驗證。3.     輸入使用者名稱 demo ,密碼 changeit 一旦登陸成功,OpenAM設定了一個session cookie ,名稱為iPlanetDirectoryPro,網域名稱為.example.com。該網域名稱為你訪問的web應用網域名稱。 如果你在瀏覽器將查看這個cookie,你將看到類似AQIC5wM2LY4SfcwciyfvJcQDUIB7kIWEH187Df_txqLdAVc. *AAJTSQACMDEAAlNLABMxMDYwNzY1MjQ0NTE0ODI2NTkx*.的值。這是加密後的SSO Token值。Openam通過它來決定你的一系列身份操作,例如驗證,登陸,登出。當這個session失效,你必須重新認證。 OpenAM session 用於 SSO(單點登陸)。OpenAM以此為依據進行授權判斷。SSO session 終結的方式有幾種,例如:當瀏覽器session終結時,從OpenAM登出時。OpenAM也設立了兩個限制:當session不活動一段時間(預設30分鐘),超過生命上限(預設2小時)。 4. 成功登陸後,你被重新定義到最初請求頁面。     在後台,OpenAM將你的瀏覽器重定義到你最初請求的頁面http://www.example.com:8000。web策略代理攔截該請求,發現SSO Token的存在,然後向OpenAM諮詢“該使用者是否有許可權訪問http://www.example.com:8000”,OpenAM回複策略代理“同意通過”。因此策略代理允許Apache HTTP Server 返回請求頁面。 以上為部署一個簡單OpenAM 單點登入的例子。關於更多OpenAM的資訊,請閱讀下文。  1.5 關於Stateless Session在上文中提到的 名稱為iPlanetDirectoryPro的session cookie實際上儲存的是一個定位資訊,指向的是OpenAM伺服器上真正的關於本次會話資訊的儲存位置。關於這種儲存在伺服器記憶體中的session稱為有狀態Session(stateful session)。 OpenAM也支援無狀態Session(stateless session),既session儲存在用戶端。關於如何配置stateless sessions。 https://backstage.forgerock.com/#!/docs/openam/13/admin-guide#chap-session-state   第二章:更多關於OpenAM    

基於OpenAM系列的SSO----基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.