私はWSO2 5.2を使用しています。私はJDBCUserStoreManagerを拡張し、読み取り専用のカスタムUserStoreManagerを作成しました。 user-mgt.xmlのスニペットを示します。ユーザ認証の面でWSO2 ISのログインエラーメッセージのカスタマイズ
<UserStoreManager class="org.arbfile.wso2.user.ReadOnlyJDBCUserStoreManager">
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.JDBCTenantManager</Property>
<Property name="ReadOnly">true</Property>
<Property name="ReadGroups">false</Property>
<Property name="WriteGroups">false</Property>
........
</UserStoreManager>
、私は私のカスタムクラスのdoAuthenticate()メソッドでは、ユーザ/ PASSW検証をやっています。また、IPフィルタリングやユーザーアカウントのロックなど、他のチェックも行っています。これらの他の項目が失敗すると、私はUserStoreExceptionをスローすることができます。私が抱えている問題は、特定の障害状態に基づいて適切なエラーメッセージを設定することです。私は以下のリンクhttps://docs.wso2.com/display/IS500/Customizing+Authentication+Error+Messagesを見つけましたが、情報があまりにも曖昧です。 「新しい」カスタムエラーメッセージを設定して認証エンドポイントがlogin.jspに渡すようにする方法を知っておく必要があります。今、エラーが発生してもまったく同じエラーメッセージが表示されます。
EDIT:明確にするためのHTMLフォームのコードを追加:
<form action="../commonauth" method="post" id="loginForm">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-group">
<input id="username" name="username" type="text" class="form-control" tabindex="0" placeholder="Username">
</div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-group">
<input id="password" name="password" type="password" class="form-control" placeholder="Password" autocomplete="off">
</div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-group">
<input type="hidden" name="sessionDataKey" value='e04168f9-95c7-4b87-93af-60e1ecdc6273'/>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-group">
<div class="form-actions">
<button class="wr-btn green-ltgr col-xs-12 col-md-12 col-lg-12 uppercase font-extra-large" type="submit">Login</button>
</div>
</div>
</form>
私はSAMLを使用していますが、これはWSO2サーバー上のフォームベースのログインのために提示形式です。フォームアクションは "../commonauth"です。ユーザー名とパスワードを使用したフォーム提出は、別のWebアプリケーション(認証エンドポイントWebアプリケーションではない)に対して行われているようです。上記のコードは、basicauth.jspにあります。
ステップ4まで続きます。basicAuth.jspは、../commonauth not/samlssoという形式のアクションを持っています。 commonauthはここで本当の仕事をします。それは私のカスタムdoAuthenticate()を呼び出す必要がありますし、エラーでlogin.doにリダイレクトします。このプロセスフローのどこかに私自身のクラスを注入できる必要があります。 –
SSO/SAMLを使用しています –
フォームアクションは、SSOに使用しているプロトコルのタイプによって異なります。私の場合、私はsamlを使用していたので、アクションは/ samlssoでした。今、上記の解決策は、認証前のチェックを行い、IPフィルタリングやユーザーアカウントロックなどのログインページにエラーメッセージを表示することです。これは質問で説明した問題です。最終的にWSO2にクライアント資格情報を提出する前に、検証の追加層と考えてください。もちろん、すでに行ったようにカスタム論理を使ってユーザーを認証することもできます。 – Agam