2013-05-11 2 views
1

Restlet을 사용하여 RESTful API를 구현하려는 중입니다. 기본 역할 및 메소드 인증 자 이상의 기능을 거의 찾지 못했습니다. 데이터베이스에 사용자가 액세스 할 수있는 경로 및 방법을 저장했습니다. 지금 실행중인 문제는 인증 프로그램에서 경로를 얻는 방법입니다. 내가 모을 필요가있는 자원인가? 그리고 내가 권한 부여 자에게 얼마나 정확하게 전달해야할까요? 지금까지 권한이나 경로를 얻는 방법을 찾고 있습니다. 어떤 정보라도 고맙게 여기며 책과 많은 일반적인 예를 보았으며 내가 찾고있는 것을 조용히 발견하지 못했습니다.세분화 된 인증을위한 Restlet 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 
    } 
} 

답변

2

대상 자원 URI 요청 번호 getResouceRef 통해 가능() getRemainingPart().

+0

그렇지 않은 경우,이 구조는 Authorizer를 설정하는 방법에 맞습니까? 나는 두 대패를 사용하는 일부 장소 그래서 하나가 충분할 것인지 또는 내가 기대하는대로 이것이 작동하는지 확실하지 않았다. – ars265

+0

체인 구조가 좋아 보인다. 필요한 경우 계단식 라우터를 사용하여 공통의 Authorizer를 공유 할 수 있습니다. –

+0

인증자가 인증 자 다음에 첨부되어 있기 때문에 요청이 라우팅되기도 전에 각 요청이 통과되고 인증된다는 의미가 아닙니까? 설정 방법이 이미 Authorizer를 공유하고 있다고 생각합니다. – ars265