3

コンテナー (具体的には jetty) が基本的な HTTP 認証を処理し、その情報を webapp に渡すことを期待する war ファイル (具体的にはgerrit.war ) があります。そのため、コードや web.xml ファイルにアクセスできません。

これらの手順に従って既存のjetty 構成を使用して gerrit をレルムにラップしていますが、ベース URL (/login/) にアクセスすると 403 (禁止) エラーが発生します。ブラウザに資格情報を要求するように促す 401 を取得することを期待します (いいえ?)

ファイルを投稿できますが、上記の例から何も変更していません。しかし、それが役立つかどうか教えてください..

4

1 に答える 1

0

おそらく、これが発生する可能性のある多くの方法があります。私の場合、制約に役割セットがなかったために発生しました。このコードは 403 を生成しました:

private void secureServlet(ServletContextHandler handler) {
    ConstraintSecurityHandler security = new ConstraintSecurityHandler();
    security.setRealmName(this.realm);
    security.setAuthenticator(new BasicAuthenticator());
    security.setLoginService(new WebLoginService(this.engine));

    Constraint constraint = new Constraint();
    constraint.setName(Constraint.__BASIC_AUTH);
    //constraint.setRoles(new String[]{"user"});
    constraint.setAuthenticate(true);

    ConstraintMapping mapping = new ConstraintMapping();
    mapping.setConstraint(constraint);
    mapping.setPathSpec("/*");

    security.addConstraintMapping(mapping);
    handler.setSecurityHandler(security);
}

ロール行にコメントすると、jetty は代わりに 401:s で応答するように求められます。

于 2012-12-24T22:56:35.487 に答える