簡體   English   中英

WSO2 身份服務器自定義錯誤消息

[英]WSO2 Identity Server Custom error message

我們正在使用 WSO2 身份服務器 5.8.0。

我們對位於項目identity-outbound-auth-samlssoorg.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM