【问题标题】:Role-based access control using Dropwizard使用 Dropwizard 的基于角色的访问控制
【发布时间】:2016-07-30 20:15:46
【问题描述】:

我们正在为我们的下一个项目添加 Dropwizard,我们需要实施的一件事是基于角色的访问控制机制。

是否有使用 Dropwizard 的标准简单方法或我可以遵循的示例?

【问题讨论】:

    标签: java oauth dropwizard authentication rbac


    【解决方案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();
      }
    }
    

    【讨论】:

    • 条件,谢谢你的回答!所以,假设我想和 Shiro 一起使用 dropwizard-auth……我该如何做管道?
    【解决方案2】:

    您可以很好地使用 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2013-08-28
      • 2012-01-25
      • 2013-05-08
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多