Web 專案中,安全永遠是核心考量。使用者面臨密碼疲勞、釣魚攻擊、隱私政策困擾;企業需整合多系統身分、保護核心資料不外洩。SAML (Security Assertion Markup Language) 作為 OASIS 標準,提供安全的單點登入 (SSO) 協定,讓網站間安全交換身分資訊,解決跨域認證授權難題。
SAMLart(Artifact/瀏覽器憑證)

<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"
MajorVersion="1" MinorVersion="1"
RequestID="_216.27.61.137.103896224111"
IssueInstant="2005-03-19T17:04:21.022Z">
<samlp:AssertionArtifact>AAGZE1RNQJEFzYNCGAGPjWvtDIRSZ4</samlp:AssertionArtifact>
</samlp:Request>
<samlp:Response ... InResponseTo="_216.27.61.137.103896224111">
<samlp:Status><samlp:StatusCode Value="samlp:Success"/></samlp:Status>
<saml:Assertion ... Issuer="www.example.com">
<saml:Conditions NotBefore="..." NotOnOrAfter="..."/> <!-- 10分鐘有效窗口,防重放攻擊 -->
<saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"
AuthenticationInstant="...">
<saml:Subject>
<saml:NameIdentifier>JSmith</saml:NameIdentifier>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:artifact-01</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
</saml:Subject>
</saml:AuthenticationStatement>
</saml:Assertion>
</samlp:Response>
優勢:來源站點升級認證方式(如改指紋驗證)無需通知目標站點;目標站點調整權限模型不影響來源站點。
Conditions NotBefore/NotOnOrAfter 限制斷言有效期,防重放攻擊傳統需使用者名/密碼的 API 需調整:
// 不相容 SAML
public void makeChange(String username, String password, String[] params);
// 相容 SAML:移除密碼參數,改由容器/框架注入已驗證身分
public void makeChange(String[] params); // 使用者身分從 SecurityContext 獲取
登入表單需為 SAML 驗證使用者禁用密碼欄位。
SAMLCredentialNameMapper、SAMLIdentityAssertionNameMapper,配置於管理主控台SAML 為企業應用提供標準化、安全的身分聯合基礎。WebLogic 9.x 內建支援大幅降低整合門檻。無論應用架構如何,皆有多種路徑接入 SAML 生態,實現安全便捷的單點登入體驗。