public void tokenResolvers() { // tag::tokenresolver[] AuthenticationTokenResolver<MyMessage> myResolver = AuthenticationTokenResolver.create(MyMessage.class, // <1> msg -> msg.getHeader("MY_HEADER").map(value -> new MyMessageAuthenticationToken(value)) // <2> ); // end::tokenresolver[] // tag::realmmsg[] Realm realm = Realm.builder().withResolver(myResolver) // <1> .withAuthenticator(new MyAuthenticator()) // <2> .build(); MyMessage message = new MyMessage(); Authentication authc = realm.authenticate(message); // <3> // end::realmmsg[] }
public void contextResourceRealm() { // tag::realm2[] Context.get().classLoaderScope() // <1> .map(s -> s.put(Realm.CONTEXT_KEY, Realm.builder().withResolver(AuthenticationToken.httpBasicResolver()) .withAuthenticator(Account.authenticator(getAccountProvider())).withDefaultAuthorizer() .build())); // end::realm2[] }
public void configureJaxrsApplication() { AccountProvider provider = id -> { // <5> // a test provider wich always returns an Account with given id and s3cr3t as password return Optional.ofNullable(Account.builder(id).credentials(Credentials.builder().secret("s3cr3t").build()) .enabled(true).build()); }; Realm realm = Realm.builder() // <6> .withResolver(AuthenticationToken.httpBasicResolver()) // <7> .withAuthenticator(Account.authenticator(provider)) // <8> .withDefaultAuthorizer().build(); ContextResolver<Realm> realmContextResolver = new ContextResolver<Realm>() { // <9> @Override public Realm getContext(Class<?> type) { return realm; } }; register(realmContextResolver); // <10> } // end::auth[]
public void authenticator() throws IOException { // tag::authenticator[] JwtConfiguration configuration = JwtConfiguration.builder() // <1> .issuer("MyIssuer") // JWT token issuer .expireTime(10000) // expire time in milliseconds .includeDetails(true) // include the Authentication details in JWT token generation .includePermissions(true) // include the Authentication permissions in JWT token generation .signatureAlgorithm(JwtSignatureAlgorithm.HS256) // use HS256 as signature algorithm .sharedKey(new byte[] { 1, 2, 3 }) // shared key to use with the symmetric signing algorithm .build(); // JWT authenticator JwtAuthenticator jwtAuthenticator = JwtAuthenticator.builder().configuration(configuration) // <2> .issuer("allowedIssuer") // <3> .withRequiredClaim("myClaim") // <4> .build(); // Realm Realm realm = Realm.builder().withAuthenticator(jwtAuthenticator) // <5> .withDefaultAuthorizer().build(); Authentication authc = realm.authenticate(AuthenticationToken.bearer("TheJWTtokenHere...")); // <6> realm = Realm.builder().withAuthenticator(jwtAuthenticator) // .withResolver(AuthenticationToken.httpBearerResolver()) // <7> .withDefaultAuthorizer().build(); HttpRequest request = obtainHttpRequest(); authc = realm.authenticate(request); // <8> // end::authenticator[] }
public void basicresolver() { // tag::basicresolver[] AccountProvider accountProvider = getAccountProvider(); Realm realm = Realm.builder().withResolver(AuthenticationToken.httpBasicResolver()) // <1> .withAuthenticator(Account.authenticator(accountProvider)) // <2> .build(); // obtain the HttpRequest message, for example using a servlet request HttpRequest request = getHttpRequest(); try { Authentication authc = realm.authenticate(request); // <3> } catch (AuthenticationException e) { // handle authentication failures } // end::basicresolver[] }
@Override public Realm getContext(Class<?> type) { return Realm.builder() // .withResolver(AuthenticationToken.httpBasicResolver()) // <1> .withAuthenticator(Account.authenticator(getAccountProvider())) // <2> .withDefaultAuthorizer() // <3> .build(); }