本文整理汇总了Java中org.ldaptive.auth.Authenticator.authenticate方法的典型用法代码示例。如果您正苦于以下问题:Java Authenticator.authenticate方法的具体用法?Java Authenticator.authenticate怎么用?Java Authenticator.authenticate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.ldaptive.auth.Authenticator
的用法示例。
在下文中一共展示了Authenticator.authenticate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: authenticate
import org.ldaptive.auth.Authenticator; //导入方法依赖的package包/类
@Override
public Authentication authenticate(final Authentication authentication) throws AuthenticationException {
try {
final String username = authentication.getPrincipal().toString();
final Object credentials = authentication.getCredentials();
final String password = credentials == null ? null : credentials.toString();
LOGGER.debug("Preparing LDAP authentication request for user [{}]", username);
final AuthenticationRequest request = new AuthenticationRequest(username, new org.ldaptive.Credential(password), ReturnAttributes.ALL.value());
final Authenticator authenticator = Beans.newLdaptiveAuthenticator(adminPagesSecurityProperties.getLdap());
LOGGER.debug("Executing LDAP authentication request for user [{}]", username);
final AuthenticationResponse response = authenticator.authenticate(request);
LOGGER.debug("LDAP response: [{}]", response);
if (response.getResult()) {
final LdapEntry entry = response.getLdapEntry();
final CommonProfile profile = new CommonProfile();
profile.setId(username);
entry.getAttributes().forEach(a -> profile.addAttribute(a.getName(), a.getStringValues()));
LOGGER.debug("Collected user profile [{}]", profile);
this.authorizationGenerator.generate(WebUtils.getPac4jJ2EContext(), profile);
LOGGER.debug("Assembled user profile with roles after generating authorization claims [{}]", profile);
final Collection<GrantedAuthority> authorities = new ArrayList<>();
authorities.addAll(profile.getRoles().stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList()));
LOGGER.debug("List of authorities remapped from profile roles are [{}]", authorities);
final RequireAnyRoleAuthorizer authorizer = new RequireAnyRoleAuthorizer(adminPagesSecurityProperties.getAdminRoles());
LOGGER.debug("Executing authorization for expected admin roles [{}]", authorizer.getElements());
final J2EContext context = WebUtils.getPac4jJ2EContext();
if (authorizer.isAllAuthorized(context, Arrays.asList(profile))) {
return new UsernamePasswordAuthenticationToken(username, password, authorities);
}
LOGGER.warn("User [{}] is not authorized to access the requested resource allowed to roles [{}]",
username, authorizer.getElements());
} else {
LOGGER.warn("LDAP authentication response produced no results for [{}]", username);
}
} catch (final Exception e) {
LOGGER.error(e.getMessage(), e);
throw new InsufficientAuthenticationException("Unexpected LDAP error", e);
}
throw new BadCredentialsException("Could not authenticate provided credentials");
}
示例2: authenticate
import org.ldaptive.auth.Authenticator; //导入方法依赖的package包/类
/**
* Perform authentication with given username and password.
* Receive the result from Ldap server
* @param username Username that user entered to login
* @param password Password that user entered to login
* @return LdapEntry which contains all user attributes
*/
private LdapEntry authenticate(String username,Object password)
{
try {
SearchDnResolver dnResolver = new SearchDnResolver(new DefaultConnectionFactory(connConfig));
dnResolver.setBaseDn(_userBaseDn);
dnResolver.setSubtreeSearch(true);
String userFilter = buildFilter(_userFilter, _userObjectClass, _userIdAttribute);
LOG.debug("Searching a user with filter {} where user is {}", userFilter, username);
dnResolver.setUserFilter(userFilter);
// Set Authenticator with username and password. It will return the user if username/password matches.
BindAuthenticationHandler authHandler = new BindAuthenticationHandler(new DefaultConnectionFactory(connConfig));
Authenticator auth = new Authenticator(dnResolver, authHandler);
AuthenticationRequest authRequest = new AuthenticationRequest();
authRequest.setUser(username);
if (password instanceof char[]) {
authRequest.setCredential(new org.ldaptive.Credential(new String((char[]) password)));
} else if (password instanceof String){
authRequest.setCredential(new org.ldaptive.Credential((String)password));
} else {
LOG.error("Unexpected type for password '{}'", (password != null) ? password.getClass() : "NULL");
return null;
}
String[] userRoleAttribute = ReturnAttributes.ALL.value();
authRequest.setReturnAttributes(userRoleAttribute);
LOG.debug("Retrieved authenticator from factory: {}", auth);
LOG.debug("Retrieved authentication request from factory: {}", authRequest);
AuthenticationResponse response = auth.authenticate(authRequest);
LOG.info("Found user?: {}", response.getResult());
if (response.getResult()) {
LdapEntry entry = response.getLdapEntry();
return entry;
} else {
// User not found. Most likely username/password didn't match. Log the reason.
LOG.error("Result code: {} - {}", response.getResultCode(), response.getMessage());
}
} catch (LdapException e) {
LOG.warn(e.getMessage());
}
return null;
}