package org.argeo.cms.auth;
import static org.argeo.naming.LdapAttrs.cn;
-import static org.argeo.naming.LdapAttrs.description;
import java.io.IOException;
import java.security.PrivilegedAction;
-import java.security.cert.X509Certificate;
-import java.time.Instant;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import javax.naming.InvalidNameException;
import javax.naming.ldap.LdapName;
import javax.security.auth.Subject;
import javax.security.auth.callback.Callback;
import org.argeo.cms.CmsException;
import org.argeo.cms.internal.kernel.Activator;
import org.argeo.naming.LdapAttrs;
-import org.argeo.naming.NamingUtils;
import org.argeo.node.NodeConstants;
import org.argeo.node.security.CryptoKeyring;
import org.argeo.osgi.useradmin.AuthenticatingUser;
import org.argeo.osgi.useradmin.IpaUtils;
import org.argeo.osgi.useradmin.OsUserUtils;
+import org.argeo.osgi.useradmin.TokenUtils;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;
UserAdmin userAdmin = Activator.getUserAdmin();
final String username;
final char[] password;
- X509Certificate[] certificateChain = null;
+ Object certificateChain = null;
if (sharedState.containsKey(CmsAuthUtils.SHARED_STATE_NAME)
&& sharedState.containsKey(CmsAuthUtils.SHARED_STATE_PWD)) {
// NB: required by Basic http auth
// // TODO locale?
} else if (sharedState.containsKey(CmsAuthUtils.SHARED_STATE_NAME)
&& sharedState.containsKey(CmsAuthUtils.SHARED_STATE_CERTIFICATE_CHAIN)) {
- String certificateName = (String) sharedState.get(CmsAuthUtils.SHARED_STATE_NAME);
- LdapName ldapName;
- try {
- ldapName = new LdapName(certificateName);
- } catch (InvalidNameException e) {
- e.printStackTrace();
- return false;
- }
- username = ldapName.getRdn(ldapName.size()-1).getValue().toString();
- certificateChain = (X509Certificate[]) sharedState.get(CmsAuthUtils.SHARED_STATE_CERTIFICATE_CHAIN);
+ String certDn = (String) sharedState.get(CmsAuthUtils.SHARED_STATE_NAME);
+// LdapName ldapName;
+// try {
+// ldapName = new LdapName(certificateName);
+// } catch (InvalidNameException e) {
+// e.printStackTrace();
+// return false;
+// }
+// username = ldapName.getRdn(ldapName.size() - 1).getValue().toString();
+ username = certDn;
+ certificateChain = sharedState.get(CmsAuthUtils.SHARED_STATE_CERTIFICATE_CHAIN);
password = null;
} else if (singleUser) {
username = OsUserUtils.getOsUsername();
// Log and monitor new login
HttpServletRequest request = (HttpServletRequest) sharedState.get(CmsAuthUtils.SHARED_STATE_HTTP_REQUEST);
- CmsAuthUtils.addAuthorization(subject, authorization, locale, request);
+ CmsAuthUtils.addAuthorization(subject, authorization);
// Unlock keyring (underlying login to the JCR repository)
char[] password = (char[]) sharedState.get(CmsAuthUtils.SHARED_STATE_PWD);
}
protected Authorization getAuthorizationFromToken(UserAdmin userAdmin, Group tokenGroup) {
- String expiryDateStr = (String) tokenGroup.getProperties().get(description.name());
- if (expiryDateStr != null) {
- Instant expiryDate = NamingUtils.ldapDateToInstant(expiryDateStr);
- if (expiryDate.isBefore(Instant.now())) {
- if (log.isDebugEnabled())
- log.debug("Token " + tokenGroup.getName() + " has expired.");
- return null;
- }
- }
+ if (TokenUtils.isExpired(tokenGroup))
+ return null;
+// String expiryDateStr = (String) tokenGroup.getProperties().get(description.name());
+// if (expiryDateStr != null) {
+// Instant expiryDate = NamingUtils.ldapDateToInstant(expiryDateStr);
+// if (expiryDate.isBefore(Instant.now())) {
+// if (log.isDebugEnabled())
+// log.debug("Token " + tokenGroup.getName() + " has expired.");
+// return null;
+// }
+// }
Authorization auth = userAdmin.getAuthorization(tokenGroup);
return auth;
}