我们正在使用Restlet 2.0.8,并且有一个Application实例覆盖org.restlet.Application#createInboundRoot()。在其中,我们创建Router实例,并(现在)返回DigestAuthenticator,如下面的代码所示:

@Override
public synchronized Restlet createInboundRoot() {
    log.info("App::createInboundRoot called");

    this.authenticator = getAuthenticator();

    Router router = new Router(getContext());
    router.attach("/echo", EchoResource.class);
    router.attach("/status", StatusResource.class);

    authenticator.setNext(router);
    return authenticator;
}

private ChallengeAuthenticator getAuthenticator() {
    DigestAuthenticator auth = new DigestAuthenticator(getContext(), "Guard", "s3cret");
    auth.setWrappedVerifier(new SimpleVerifier("user","pass");
    auth.setOptional(false);
    return auth;
}


我想要实现的是:


让EchoResource使用摘要身份验证,并且StatusResource应该使用HTTP基本身份验证


Restlets有可能吗?

最好,
克里斯

最佳答案

通过链接DigestAuthenticator(可选:true)和BasicAuthenticator(可选:false),这是可能的。伪代码:

   digestAuth.setNext(basicAuth);
   basicAuth.setNext(router);

关于java - ReSTLet 2.0.8:单个ReSTLet应用程序实例有多种身份验证方法(BASIC,DIGEST)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6855287/

10-12 23:39