ATG の dynamo 管理を頻繁に使用して、他のさまざまなコンポーネントに加えられた変更をテストします。Dynamo Administration を開くためのログインを無効にする方法はありますか? 資格情報を複数回要求することが何度も確認されました。なぜそれを行うのか、それを回避する方法について何か推測はありますか?
3 に答える
掘り下げた後、私はより良いアプローチを見つけました。認証を無効にするより簡単な方法は、AuthenticationServlet で認証を無効にすることです。
このDYNAMO_HOME/localconfig/atg/dynamo/servlet/adminpipeline/AuthenticationServlet.properties
ファイルを実現するには、以下に示す内容が必要です。
$class=atg.servlet.pipeline.BasicAuthenticationPipelineServlet
enabled=false
Basic Authentication Pipeline Servlet は、認証を他のコンポーネントにリダイレクトするクラスです。enabled=false を変更することで、認証を無効にすることができます。true に変更すると、以前と同様に認証が有効になります。
詳細については、このリンクに従ってください: Oracle Commerce の DynAdmin 認証を無効にする
オーセンティケーターをオーバーライドして試してみましたが、構成からフラグ「allowPassThroughEnabled」が true の場合は true を返します。
BasicAuthenticationServlet パイプラインは、要求が基本認証の Authorization ヘッダーを持つ場合にユーザーを認証するために Authenticator を呼び出します。
Authenticator コンポーネントをオーバーライドし、ブール値のプロパティを追加しました
allowPassThroughEnabled
これにより、認証が有効/無効になります。
プロパティ ファイルとクラス ファイルは次のようになります。
#/atg/dynamo/servlet/adminpipeline/Authenticator.properties
$class=com.myadminpipeline.CustomUserAuthorityAuthenticator
allowPassThroughEnabled=true
そしてクラス:
package com.myadminpipeline;
import atg.servlet.pipeline.UserAuthorityAuthenticator;
public class CustomUserAuthorityAuthenticator extends
UserAuthorityAuthenticator {
private boolean allowPassThroughEnabled;
public boolean isAllowPassThroughEnabled() {
return allowPassThroughEnabled;
}
public void setAllowPassThroughEnabled(boolean allowPassThroughEnabled) {
this.allowPassThroughEnabled = allowPassThroughEnabled;
}
@Override
public boolean authenticate(String pUserId, String pPassword) {
if (isAllowPassThroughEnabled()){
return true;
}
return super.authenticate(pUserId, pPassword);
}
}
それは私のために仕事をします。要件に応じて、このフラグを true または false に切り替えることもできます。
お役に立てれば!
これまでのところ、必要なことを行う方法を見つけることができませんでしたが、lazyAuthentication を有効にすることで頻繁なログインを回避する回避策を見つけました。ATG の lazyAuthentication 機能を有効にすると、ログインはセッションごとに 1 回だけ要求されます。この機能を使用しないと、数分操作がないとログインが求められます。この機能を有効にするには、次の手順を実行します...
- $DYNAMO_HOME/localconfig/atg/dynamo に移動します。
- まだ存在しない場合は、servlet という名前のフォルダーを作成します。
- まだ存在しない場合は、サーブレット内に adminpipeline という名前のフォルダーを作成します
- 次の内容を含む Authenticator.properties という名前のプロパティ ファイルを作成します。
$class=atg.servlet.pipeline.UserAuthorityAuthenticator $scope=グローバル userAuthority=/atg/dynamo/security/AdminUserAuthority userPath=/atg/dynamo/security/User lazyAthentication=true allowedAccounts=管理者グループ リポジトリ=/atg/dynamo/security/AdminSqlRepository