[英]WSO2 Identity Server Custom error message
我們正在使用 WSO2 身份服務器 5.8.0。
我們對位於項目identity-outbound-auth-samlsso
的org.wso2.carbon.identity.application.authenticator.samlsso.manager.DefaultSAML2SSOManager
進行了擴展
基本上,當我們使用基於 SAML 身份驗證的外部 IdP 時,我們需要向 SAML 響應添加一些檢查。
我們進行了所有檢查,一切正常。 我們正面臨一個小問題。 在某些情況下,當發生一些訪問錯誤時,我們需要自定義錯誤消息給用戶。 我在這里看到我看到可以自定義錯誤消息,並且可以配置 WSO2 IS 以便在請求參數中傳遞錯誤代碼。 所以,我想做的是在發生一個錯誤時生成自定義錯誤代碼。 我嘗試了之前的配置,然后在org.wso2.carbon.identity.application.authenticator.samlsso.SAMLSSOAuthenticator
class 我做了以下
@Override
protected void processAuthenticationResponse(HttpServletRequest request, HttpServletResponse response, AuthenticationContext context) throws AuthenticationFailedException {
try{
//Original code
} catch (SPIDCheckException spe) {
// whenever the code reaches here the subject identifier will be null. Therefore we can't pass AuthenticatedUser object with the exception.
AuthenticationFailedException afe = new AuthenticationFailedException(spe.getMessage(), spe);
afe.setErrorCode("MY_CUSTOM_ERROR_CODE");
throw afe;
}
}
我期待在以前的配置中,我的自定義 cose 會出現在請求參數中,但事實並非如此。 所以我必須找到一種解決方法; 我的解決方案是在響應中添加一個 cookie,但我不喜歡它。
是否有機會將自定義錯誤代碼從SAMLSSOAuthenticator
傳播到查詢字符串參數中的登錄錯誤 JSP 頁面?
我錯過了什么嗎?
謝謝
安傑洛
context.setProperty("AuthErrorCode", "666");
context.setProperty("AuthErrorMessage", "extended class error message");
在上面的processAuthenticationResponse
方法的 catch 塊中設置。 參數將傳遞給重試頁面 URL 參數。
編輯以迎合評論的新細節。
流程為“SAML -> SAML”。 但上述建議的改進僅在“Oauth -> SAML/Oauth”流程中引入。 這最初是在 5.3.0 中引入的。 但是,我也剛剛檢查了 5.8.0,它就在那里。
架構是這樣的。
Inbound Authenticator -> Framework -> Outbound Authenticator
在原來的改進中,WSO2 修復了框架組件和入站 Oauth 組件。 這樣任何人都可以將這些屬性設置為框架上下文。 這些將被傳播到入站端。 如果入站是 Oauth,則默認情況下這將起作用,因為 Oauth 入站驗證器也正在通過相同的改進得到解決。
由於您的入站不是 Oauth,而是 SAML,因此您的默認 SAML 入站身份驗證器不知道如何從框架的上下文 object 中讀取設置的屬性。
如果您想實現這一點,您還需要編寫一個自定義的“入站 SAML 身份驗證器”。 (到目前為止,您已經編寫了一個出站 SAML 身份驗證器。我們也需要它來填充錯誤消息。)
擴展現有的 SAML 入站身份驗證器並編寫一個新的身份驗證器來讀取和設置錯誤消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.