سؤال

نحن نعمل على زيادة Dropwizard لمشروعنا التالي وأحد الأشياء التي سنحتاج إلى تنفيذها هو آلية التحكم في الوصول القائمة على الدور.

هل هناك طريقة قياسية سهلة للقيام بذلك باستخدام Dropwizard أو أمثلة يمكنني اتباعها؟

هل كانت مفيدة؟

المحلول

هل ألقيت نظرة على مصادقة Dropwizard؟إنه يجعل من السهل جدًا توصيل أي طريقة مصادقة تريدها (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

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top