Leo Yeh's Blog

SAS 系統管理 (90)

教學目標

初步了解 SAS 9 平台中有關單一登入機制的基本概念。

重點概念

首先沒有一種機制適用於所有 SAS 平台中所有應用程式的身分驗證,我們主要會整合身份驗證流程、信任關係和單一登入技術,以利達到單一登入機制的目標,分別為:

  1. 保護個人身份。
  2. 最小化安全風險。
  3. 最小化設置和維護工作。
  4. 提供一致性的使用者體驗。
  5. 提供環境中不同系統的存取。
  6. 整合至各種不同企業的環境中。

接著當使用者開啟 SAS 客戶端,主要會在驗證階段系統將會確保使用者是否本人,主要有五個驗證步驟,分別為:

  1. 客戶端將會提示使用者輸入帳號和密碼。
  2. 使用者輸入中繼伺服器主機已經的憑據。
  3. 客戶端將會傳送憑據至中繼資料伺服器中。
  4. 中繼資料伺服器將會傳送憑據給主機進行身份驗證。
  5. 若主機確認使用者具有有效帳戶,則主機會通過驗證的使用者帳號回傳給中繼資料伺服器。

並且當使用者通過驗證階段,下一步就會進行識別階段,此時 SAS 平台將會檢查使用者帳號,試圖對應一個與經過驗證的使用者帳號。當找到對應的使用者帳號,將會建立連線,並且擁有使用者的身份定義,同時因為完整性限製條件將會確保不會同時擁有多個身份定義。反之若未找

再來針對企業中的 Windows 平台有關單一登入機制的實務應用,主要可以分為三大類型,分別為:

  1. 撰寫 Java 程式透過 SAS 平台預設機制進行身份驗證。
  2. 撰寫 Java 程式透過企業內部資料庫進行身份驗證。
  3. 透過設定整合 Windows Active Directive 進行身份驗證。

其中撰寫 Java 程式透過 SAS 平台預設機制進行身份驗證的重點主要是透過「com.sas.svcs.security.authentication.client」套件進行客戶端登入,並且取得進行身份驗證取得票據,之後我們就能夠透過票據直接存取 SAS 網站應用程式,請參考以下程式碼。

1
2
3
4
5
6
7
8
9
String username =
String password =
URL ClientUrl = new URL(…);
URL LogonUrl = new URL(ClientUrl.getProtocol(), ClientUrl.getHost(), ClientUrl.getPort(), "/SASLogon");
AuthenticationClient client = new AuthenticationClient(LogonUrl.toString());
client.logon(username, password);
AuthenticationClientHolder.set(client);
String ticket = client.acquireTicket(ClientUrl.toString());
String location = LogonUrl + "?direct_authentication_ticket=" + ticket + "&service="+URLEncoder.encode(ClientUrl.toString(), "UTF-8");

至於撰寫 Java 程式透過企業內部資料庫進行身份驗證的重點主要是將原先「SAS Metadata Server Authentication」驗證方式改為「Container Managed Authentication」驗證方式,差別在於中繼資料伺服器驗證主要是由網站應用程式伺服器傳送「Credentials」中繼資料伺服器中,再與預設的「Authentication Provider」進行身份驗證,而容器管理驗證則是會客製「Realm」,與企業提供的「Authentication Provider」進行身份驗證,當身份驗證通過,則會將 ID 傳送至中繼資料伺服器建立「Trusted Connection」就能夠完成單一登入機制。

最後透過設定整合「Windows Active Directory」進行身份驗證的重點主要是將證機制調整為「Integrated Windows Authentication (IWA)」,讓使用者不需再一次輸入帳號密碼即可以登入 Windows 網域的帳號使用網站應用程式,主要需要在 SAS 平台中設定「Kerberos」身份驗證機制,同時客戶端的瀏覽器必須針對「使用者驗證」設定「只在近端內部網路區域自動登入」和「網際網路選項」設定「啟用整合式 Windows 驗證」的相關設定才能夠將 SAS 平台整合「Windows Active Directory」完成單一登入機制。

相關資源

⬅️ Go back