java - 创建 ReSTLet Authorizer 以进行细粒度授权

标签 java api rest restlet restlet-2.0

我正在尝试使用 ReSTLet 实现 RESTful API,但除了基本的角色和方法授权器之外,几乎没有发现任何其他内容。我已将用户可以访问的路线和这些路线的方法存储在数据库中。我现在遇到的问题是如何获取Authorizer中的路径。这是我需要收集的资源吗?我到底应该如何路由到授权者?我已经发布了到目前为止我所拥有的内容,正在寻找如何在我的授权者中获取路径或资源。任何信息都值得赞赏,我浏览了书籍和许多通用示例,但没有找到我正在寻找的安静内容。

我的路由应用程序:

public class MyRoutingApp extends org.restlet.Application {

    @Override  
    public synchronized Restlet createInboundRoot() { 

        Context context = getContext();
        Router router = new Router(context);

        router.attach("/user", Users.class);
        router.attach("/post", Posts.class);
        router.attach("/comment", Comments.class);

        ChallengeAuthenticator authenticator = new ChallengeAuthenticator( 
                context, ChallengeScheme.HTTP_BASIC, "My test realm" );

        //create Verifier to ensure that the user is authenicated
        MyVerifier verifier = new MySecretVerifier();
        //grab user Roles and add them to the request
        MyEnroler enroler = new MyEnroler();

        authenticator.setVerifier( verifier );
        authenticator.setEnroler( enroler );

        //Looks up if user can be allowed to resource
        MyAuthorizer authorizer = new MyAuthorizer();
        authorizer.setNext( router );

        authenticator.setNext( authorizer );
        return authenticator; 
    }
}

我的授权人:

public class MyAuthorizer extends Authorizer {

    @Override
    protected boolean authorize( Request request, Response response ) {

        //has the security roles and user from verifier and enroler
        ClientInfo info = request.getClientInfo();
        //get http method
        Method method = request.getMethod();

        //need to get the route or resource user is attempting to access
        //allow or disallow access based on roles and method
    }
}

最佳答案

目标资源 URI 可通过 Request#getResouceRef().getRemainingPart() 获得。

关于java - 创建 ReSTLet Authorizer 以进行细粒度授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499192/

相关文章:

java - 修改/更新 jsonArray 中的值?

api - Instagram API 沙箱

javascript - 使用他们的 API 从 AWS S3 获取一个非公开的 JavaScript 文件

java - Jersey ......如何记录所有异常,但仍然调用 ExceptionMappers

java - 使用 Java 8 流嵌套每个循环返回映射

java - 带有 JSON 的 Jersey RESTful 服务

java - JVM 是如何决定 JIT 编译方法的(将方法归类为 "hot")?

javascript - LinkedIn 使用 Javascript API 设置成员权限?

java - 如何使用 Java SDK 或 Amazon API 从 EC2 获取 IAM 角色列表?

java - 不同的 JSON 数组响应