use of org.wildfly.security.credential.Credential in project wildfly-swarm by wildfly-swarm.
the class AuthCallbackHandler method handle.
@Override
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
for (Callback current : callbacks) {
if (current instanceof NameCallback) {
NameCallback ncb = (NameCallback) current;
ncb.setName(this.userName);
} else if (current instanceof RealmCallback) {
RealmCallback rcb = (RealmCallback) current;
rcb.setText(rcb.getDefaultText());
} else if (current instanceof CredentialCallback) {
CredentialCallback ccb = (CredentialCallback) current;
try {
DigestPasswordAlgorithmSpec algoSpec = new DigestPasswordAlgorithmSpec(this.userName, this.realm);
EncryptablePasswordSpec passwordSpec = new EncryptablePasswordSpec(this.password.toCharArray(), algoSpec);
Password passwd = PasswordFactory.getInstance(ALGORITHM_DIGEST_MD5).generatePassword(passwordSpec);
Credential creds = new PasswordCredential(passwd);
ccb.setCredential(creds);
} catch (InvalidKeySpecException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
} else if (current instanceof PasswordCallback) {
PasswordCallback pcb = (PasswordCallback) current;
pcb.setPassword(this.password.toCharArray());
} else {
throw new UnsupportedCallbackException(current);
}
}
}
use of org.wildfly.security.credential.Credential in project wildfly by wildfly.
the class SubjectUtil method convertToSecurityIdentity.
public static SecurityIdentity convertToSecurityIdentity(Subject subject, Principal principal, SecurityDomain domain, String roleCategory) {
SecurityIdentity identity = null;
for (Object obj : subject.getPrivateCredentials()) {
if (obj instanceof SecurityIdentity) {
identity = (SecurityIdentity) obj;
break;
}
}
if (identity == null) {
identity = domain.createAdHocIdentity(principal);
}
// convert public credentials
IdentityCredentials publicCredentials = IdentityCredentials.NONE;
for (Object credential : subject.getPublicCredentials()) {
if (credential instanceof PublicKey) {
publicCredentials = publicCredentials.withCredential(new PublicKeyCredential((PublicKey) credential));
} else if (credential instanceof X509Certificate) {
publicCredentials = publicCredentials.withCredential(new X509CertificateChainPublicCredential((X509Certificate) credential));
} else if (credential instanceof Credential) {
publicCredentials = publicCredentials.withCredential((Credential) credential);
}
}
if (!publicCredentials.equals(IdentityCredentials.NONE)) {
identity = identity.withPublicCredentials(publicCredentials);
}
// convert private credentials
IdentityCredentials privateCredentials = IdentityCredentials.NONE;
for (Object credential : subject.getPrivateCredentials()) {
if (credential instanceof Password) {
privateCredentials = privateCredentials.withCredential(new PasswordCredential((Password) credential));
} else if (credential instanceof SecretKey) {
privateCredentials = privateCredentials.withCredential(new SecretKeyCredential((SecretKey) credential));
} else if (credential instanceof KeyPair) {
privateCredentials = privateCredentials.withCredential(new KeyPairCredential((KeyPair) credential));
} else if (credential instanceof PrivateKey) {
privateCredentials = privateCredentials.withCredential(new X509CertificateChainPrivateCredential((PrivateKey) credential));
} else if (credential instanceof Credential) {
privateCredentials = privateCredentials.withCredential((Credential) credential);
}
}
if (!privateCredentials.equals(IdentityCredentials.NONE)) {
identity = identity.withPrivateCredentials(privateCredentials);
}
return identity;
}
use of org.wildfly.security.credential.Credential in project fuse-karaf by jboss-fuse.
the class ActivatorTest method initializeCredentialStore.
@Before
public void initializeCredentialStore() throws Exception {
activator.start(null);
final WildFlyElytronProvider elytron = new WildFlyElytronProvider();
Security.addProvider(elytron);
final PasswordFactory passwordFactory = PasswordFactory.getInstance(ClearPassword.ALGORITHM_CLEAR, elytron);
final Password password = passwordFactory.generatePassword(new ClearPasswordSpec("it was the best of times it was the worst of times".toCharArray()));
final Credential credential = new PasswordCredential(password);
final CredentialSource credentialSource = IdentityCredentials.NONE.withCredential(credential);
credentialStore = CredentialStore.getInstance(KeyStoreCredentialStore.KEY_STORE_CREDENTIAL_STORE, elytron);
final String storePath = new File(tmp.getRoot(), "credential.store").getAbsolutePath();
final Map<String, String> parameters = new HashMap<>();
parameters.put("location", storePath);
parameters.put("keyStoreType", "JCEKS");
credentialStore.initialize(parameters, new CredentialStore.CredentialSourceProtectionParameter(credentialSource));
final Password secret = passwordFactory.generatePassword(new ClearPasswordSpec("this is a password".toCharArray()));
final Credential value = new PasswordCredential(secret);
credentialStore.store("alias", value);
credentialStore.flush();
}
use of org.wildfly.security.credential.Credential in project wildfly by wildfly.
the class SubjectUtil method fromSecurityIdentity.
public static Subject fromSecurityIdentity(final SecurityIdentity securityIdentity, Subject subject) {
if (subject == null) {
subject = new Subject();
}
// The first principal added must be the security identity principal
// as logic in both CXF and JBoss WS look for the first non-Group principal
subject.getPrincipals().add(securityIdentity.getPrincipal());
Roles identityRoles = securityIdentity.getRoles();
// Just add a simple principal for each role instead of aggregating them in a Group.
// CXF can use such principals when identifying the subject's roles
String principalName = securityIdentity.getPrincipal().getName();
Set<Principal> principals = subject.getPrincipals();
for (String role : identityRoles) {
if (!principalName.equals(role)) {
principals.add(new NamePrincipal(role));
}
}
// process the identity's public and private credentials.
for (Credential credential : securityIdentity.getPublicCredentials()) {
if (credential instanceof PublicKeyCredential) {
subject.getPublicCredentials().add(credential.castAs(PublicKeyCredential.class).getPublicKey());
} else if (credential instanceof X509CertificateChainPublicCredential) {
subject.getPublicCredentials().add(credential.castAs(X509CertificateChainPublicCredential.class).getCertificateChain());
} else {
subject.getPublicCredentials().add(credential);
}
}
for (Credential credential : securityIdentity.getPrivateCredentials()) {
if (credential instanceof PasswordCredential) {
addPrivateCredential(subject, credential.castAs(PasswordCredential.class).getPassword());
} else if (credential instanceof SecretKeyCredential) {
addPrivateCredential(subject, credential.castAs(SecretKeyCredential.class).getSecretKey());
} else if (credential instanceof KeyPairCredential) {
addPrivateCredential(subject, credential.castAs(KeyPairCredential.class).getKeyPair());
} else if (credential instanceof X509CertificateChainPrivateCredential) {
addPrivateCredential(subject, credential.castAs(X509CertificateChainPrivateCredential.class).getCertificateChain());
} else {
addPrivateCredential(subject, credential);
}
}
// add the identity itself as a private credential - integration code can interact with the SI instead of the Subject if desired.
addPrivateCredential(subject, securityIdentity);
return subject;
}
Aggregations