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());
}
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);
}
}
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");
}
});
}
Aggregations