質問

私たちは私たちの次のプロジェクトのためにドロップウィザードをスパイクしています、そして実装する必要があることの1つは役割ベースのアクセス制御メカニズムです。

ドロップウィザードや例を使用してそれを行う標準的な簡単な方法はありますか?

役に立ちましたか?

解決

dropwizard-auth を見ましたか。それはあなたが望むどんな認証方法(Shiro、Springなど)でも接続するのが非常に簡単です。それはあなたがその遠くに行きたいのであれば、OAuth2もサポートしています...

このようなshiro認証者を実装することができます:

public class BasicAuthenticator implements Authenticator<BasicCredentials, Subject> {

  @Override
  public Optional<Subject> authenticate(BasicCredentials credentials) throws AuthenticationException {
    Subject subject = SecurityUtils.getSubject();
    try {
      subject.login(new UsernamePasswordToken(credentials.getUsername(), credentials.getPassword(), false));
      return Optional.of(subject);
    } catch (UnknownAccountException | IncorrectCredentialsException | LockedAccountException e) {
    } catch (AuthenticationException ae) {
    }
    return Optional.absent();
  }

}
.

そしてあなたはこのような環境と共にshiroを登録することができます(あなたのrunメソッドから呼び出されます):

void configureAuthentication(Environment environment) {
  JdbcRealm realm = getJdbcRealm(); // However your Shiro realm is configured

  DefaultSecurityManager securityManager = new DefaultSecurityManager(realm);
  SecurityUtils.setSecurityManager(securityManager);

  environment.jersey().register(new BasicAuthProvider<Subject>(new BasicAuthenticator(), "Shiro"));
}
.

そして次のような役割をチェックします。

@GET
public SecretPlan getSecretPlan(@Auth Subject subject) {
  if (user.hasRole("secretPlanner")) {
    return new SecretPlan();
  } else {
    return new NonSecretPlan();
  }
}
.

他のヒント

Dropwizard提供の認証メカニズムを非常によく使うことができます http://www.dropwizard.io/0.9.1/docs/manual./ Auth.html

@RolesAllowed("ADMIN")
@GET
public SecretPlan getSecretPlan(@Auth User user) {
   return dao.findPlanForUser(user);
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top