How to authenticate users in Jersey

后端 未结 3 1874
被撕碎了的回忆
被撕碎了的回忆 2020-12-29 00:36

I am writing a RESTful application in Java using Jersey, and i need to authenticate users. I know i can specify the roles in the resource using the annotations @RolesAllowed

3条回答
  •  被撕碎了的回忆
    2020-12-29 01:26

    HttpAuthenticationFeature class provides HttpBasic and Digest client authentication capabilities. The feature work in one of 4 modes;

    BASIC: It’s preemptive authentication way i.e. information is send always with each HTTP request. This mode must be combined with usage of SSL/TLS as the password is send only BASE64 encoded.

    BASIC NON-PREEMPTIVE: It’s non-preemptive authentication way i.e. auth information is added only when server refuses the request with 401 status code and then the request is repeated with authentication information.

    DIGEST: Http digest authentication. Does not require usage of SSL/TLS.

    UNIVERSAL: Combination of basic and digest authentication in non-preemptive mode i.e. in case of 401 response, an appropriate authentication is used based on the authentication requested as defined in WWW-Authenticate HTTP header.

    To use HttpAuthenticationFeature, build an instance of it and register with client. For example;

    1) Basic authentication mode

    HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("username", "password");
    
    final Client client = ClientBuilder.newClient();
    client.register(feature);
    

    2) Basic authentication : non-prempitive mode

    HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder()
                                        .nonPreemptive()
                                        .credentials("username", "password")
                                        .build();
    
    final Client client = ClientBuilder.newClient();
    client.register(feature);
    

    3) Universal mode

    //Universal builder having different credentials for different schemes
    HttpAuthenticationFeature feature = HttpAuthenticationFeature.universalBuilder()
    .credentialsForBasic("username1", "password1")
    .credentials("username2", "password2").build();
    
    final Client client = ClientBuilder.newClient();
    client.register(feature);
    

提交回复
热议问题