Search in sources :

Example 1 with AuthenticationException

use of com.auth0.android.authentication.AuthenticationException in project libresonic by Libresonic.

the class JWTAuthenticationProvider method authenticate.

@Override
public Authentication authenticate(Authentication auth) throws AuthenticationException {
    JWTAuthenticationToken authentication = (JWTAuthenticationToken) auth;
    if (authentication.getCredentials() == null || !(authentication.getCredentials() instanceof String)) {
        logger.error("Credentials not present");
        return null;
    }
    String rawToken = (String) auth.getCredentials();
    DecodedJWT token = JWTSecurityService.verify(jwtKey, rawToken);
    Claim path = token.getClaim(JWTSecurityService.CLAIM_PATH);
    authentication.setAuthenticated(true);
    // TODO:AD This is super unfortunate, but not sure there is a better way when using JSP
    if (StringUtils.contains(authentication.getRequestedPath(), "/WEB-INF/jsp/")) {
        logger.warn("BYPASSING AUTH FOR WEB-INF page");
    } else if (!roughlyEqual(path.asString(), authentication.getRequestedPath())) {
        throw new InsufficientAuthenticationException("Credentials not valid for path " + authentication.getRequestedPath() + ". They are valid for " + path.asString());
    }
    List<GrantedAuthority> authorities = new ArrayList<>();
    authorities.add(new SimpleGrantedAuthority("IS_AUTHENTICATED_FULLY"));
    authorities.add(new SimpleGrantedAuthority("ROLE_TEMP"));
    return new JWTAuthenticationToken(authorities, rawToken, authentication.getRequestedPath());
}
Also used : SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) GrantedAuthority(org.springframework.security.core.GrantedAuthority) ArrayList(java.util.ArrayList) InsufficientAuthenticationException(org.springframework.security.authentication.InsufficientAuthenticationException) DecodedJWT(com.auth0.jwt.interfaces.DecodedJWT) Claim(com.auth0.jwt.interfaces.Claim)

Example 2 with AuthenticationException

use of com.auth0.android.authentication.AuthenticationException in project nextprot-api by calipho-sib.

the class NextprotAuthProvider method authenticate.

public Authentication authenticate(Authentication authentication) throws AuthenticationException {
    String token = ((Auth0JWTToken) authentication).getJwt();
    this.logger.debug("Trying to authenticate with token: " + token);
    try {
        Map<String, Object> map = null;
        Auth0User auth0User = null;
        // Should put this in 2 different providers
        if (token.split("\\.").length == 3) {
            // it's the id token (JWT)
            map = jwtVerifier.verify(token);
            this.logger.debug("Authenticating with JWT");
        }
        /* else { // not using access token for now
				try {
					
					this.logger.debug("Will ask auth0 service");
					
					//in case we send the access token
					auth0User = nextprotAuth0Endpoint.fetchUser(token);
					this.logger.debug("Authenticating with access token (asking auth0 endpoint)" + auth0User);
					
				}catch (Exception e){
					e.printStackTrace();
					this.logger.error(e.getMessage());
					throw new SecurityException("client id not found");
				}
			}*/
        this.logger.debug("Decoded JWT token" + map);
        UserDetails userDetails;
        // UI Widget map
        if ((auth0User != null && auth0User.getEmail() != null) || (map != null && map.containsKey("email"))) {
            String username = null;
            if (auth0User != null && auth0User.getEmail() != null) {
                username = auth0User.getEmail();
            } else {
                username = (String) map.get("email");
            }
            if (username != null) {
                userDetails = userDetailsService.loadUserByUsername(username);
                authentication.setAuthenticated(true);
                return createSuccessAuthentication(userDetails, map);
            } else
                return null;
        } else // Codec map
        if (map != null && map.containsKey("payload")) {
            Map<String, Object> payload = codec.decodeJWT(token);
            String username = (String) payload.get("email");
            if (username != null) {
                userDetails = userDetailsService.loadUserByUsername(username);
                userDetails.getAuthorities().clear();
                List<String> auths = (List<String>) payload.get("authorities");
                for (String authority : auths) {
                    ((Set<GrantedAuthority>) userDetails.getAuthorities()).add(new SimpleGrantedAuthority(authority));
                }
                authentication.setAuthenticated(true);
                return createSuccessAuthentication(userDetails, map);
            } else {
                return null;
            }
        } else
            throw new SecurityException("client id not found");
    /*//TODO add the application here or as another provider else if (map.containsKey("app_id")) {
				long appId = (Long) map.get("app_id");
				UserApplication userApp = userApplicationService.getUserApplication(appId);
				if (userApp.hasUserDataAccess()) {

					userDetails = userDetailsService.loadUserByUsername(userApp.getOwner());
					if (userDetails == null) {
						userService.createUser(buildUserFromAuth0(map));
					}
					userDetails = userDetailsService.loadUserByUsername(userApp.getOwner());
				}
			}*/
    } catch (InvalidKeyException e) {
        // this.logger.error("InvalidKeyException thrown while decoding JWT token " + e.getLocalizedMessage());
        throw new Auth0TokenException(e);
    } catch (NoSuchAlgorithmException e) {
        // this.logger.error("NoSuchAlgorithmException thrown while decoding JWT token " + e.getLocalizedMessage());
        throw new Auth0TokenException(e);
    } catch (IllegalStateException e) {
        // this.logger.error("IllegalStateException thrown while decoding JWT token " + e.getLocalizedMessage());
        throw new Auth0TokenException(e);
    } catch (SignatureException e) {
        // this.logger.error("SignatureException thrown while decoding JWT token " + e.getLocalizedMessage());
        throw new Auth0TokenException(e);
    } catch (IOException e) {
        // this.logger.error("IOException thrown while decoding JWT token " + e.getLocalizedMessage());
        throw new Auth0TokenException("invalid token", e);
    }
}
Also used : SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) GrantedAuthority(org.springframework.security.core.GrantedAuthority) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) SignatureException(java.security.SignatureException) IOException(java.io.IOException) InvalidKeyException(java.security.InvalidKeyException) Auth0TokenException(com.auth0.spring.security.auth0.Auth0TokenException) SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) Auth0User(com.auth0.Auth0User) UserDetails(org.springframework.security.core.userdetails.UserDetails) Auth0JWTToken(com.auth0.spring.security.auth0.Auth0JWTToken) List(java.util.List) Map(java.util.Map)

Example 3 with AuthenticationException

use of com.auth0.android.authentication.AuthenticationException in project chefly_android by chef-ly.

the class MainActivity method socialLogin.

private void socialLogin(String connection) {
    // getString(R.string.auth0_domain
    Auth0 auth0 = new Auth0(getString(R.string.auth0_client_id), getString(R.string.auth0_domain));
    WebAuthProvider.init(auth0).withConnection(connection).start(MainActivity.this, new AuthCallback() {

        @Override
        public void onFailure(@NonNull Dialog dialog) {
            dialog.show();
        }

        @Override
        public void onFailure(final AuthenticationException exception) {
            // Show error to the user
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Log.d(TAG, "LOGIN FAIL");
                    String errorMsg = "Sign in request failed";
                    showToast(errorMsg);
                }
            });
        }

        @Override
        public void onSuccess(@NonNull Credentials credentials) {
            // Navigate to your next activity
            startRecipeListActivity("aaa");
        }
    });
}
Also used : Auth0(com.auth0.android.Auth0) AuthenticationException(com.auth0.android.authentication.AuthenticationException) AuthCallback(com.auth0.android.provider.AuthCallback) Dialog(android.app.Dialog) Credentials(com.auth0.android.result.Credentials)

Aggregations

GrantedAuthority (org.springframework.security.core.GrantedAuthority)2 SimpleGrantedAuthority (org.springframework.security.core.authority.SimpleGrantedAuthority)2 Dialog (android.app.Dialog)1 Auth0User (com.auth0.Auth0User)1 Auth0 (com.auth0.android.Auth0)1 AuthenticationException (com.auth0.android.authentication.AuthenticationException)1 AuthCallback (com.auth0.android.provider.AuthCallback)1 Credentials (com.auth0.android.result.Credentials)1 Claim (com.auth0.jwt.interfaces.Claim)1 DecodedJWT (com.auth0.jwt.interfaces.DecodedJWT)1 Auth0JWTToken (com.auth0.spring.security.auth0.Auth0JWTToken)1 Auth0TokenException (com.auth0.spring.security.auth0.Auth0TokenException)1 IOException (java.io.IOException)1 InvalidKeyException (java.security.InvalidKeyException)1 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)1 SignatureException (java.security.SignatureException)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 InsufficientAuthenticationException (org.springframework.security.authentication.InsufficientAuthenticationException)1