summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorEmmanuel Raviart <eraviart@entrouvert.com>2004-07-22 10:52:11 +0000
committerEmmanuel Raviart <eraviart@entrouvert.com>2004-07-22 10:52:11 +0000
commit5c6f115243a2ec13a2e077388957fabd5d59cdfe (patch)
tree870612007ae97e63883431caee7ff446ae822aa4 /java
parentdeee550561978259663cc0f1e123d6acb5835149 (diff)
downloadlasso-5c6f115243a2ec13a2e077388957fabd5d59cdfe.tar.gz
lasso-5c6f115243a2ec13a2e077388957fabd5d59cdfe.tar.xz
lasso-5c6f115243a2ec13a2e077388957fabd5d59cdfe.zip
A little more java binding and non-regression tests.
Diffstat (limited to 'java')
-rw-r--r--java/src/c/com_entrouvert_lasso_LassoLogin.c49
-rw-r--r--java/src/java/com/entrouvert/lasso/Lasso.java16
-rw-r--r--java/src/java/com/entrouvert/lasso/LassoLogin.java10
-rw-r--r--java/tests/LoginTest.java57
4 files changed, 118 insertions, 14 deletions
diff --git a/java/src/c/com_entrouvert_lasso_LassoLogin.c b/java/src/c/com_entrouvert_lasso_LassoLogin.c
index e0a726c0..b232b145 100644
--- a/java/src/c/com_entrouvert_lasso_LassoLogin.c
+++ b/java/src/c/com_entrouvert_lasso_LassoLogin.c
@@ -65,7 +65,7 @@ JNIEXPORT void JNICALL Java_com_entrouvert_lasso_LassoLogin_initFromDump
}
JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogin_buildArtifactMsg
-(JNIEnv * env, jobject this, jint _authenticationResult,
+(JNIEnv * env, jobject this, jboolean _authenticationResult,
jstring _authenticationMethod,
jstring _reauthenticateOnOrAfter,
jint _method){
@@ -263,3 +263,50 @@ JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogin_processResponseMsg
return result;
}
+JNIEXPORT jstring JNICALL Java_com_entrouvert_lasso_LassoLogin_getAssertionArtifact
+(JNIEnv * env, jobject this){
+ LassoLogin * login;
+ char *result;
+
+ login = getCObject(env, this);
+
+ result = login->assertionArtifact;
+
+ return (*env)->NewStringUTF(env, result);
+}
+
+JNIEXPORT jstring JNICALL Java_com_entrouvert_lasso_LassoLogin_getNameIdentifier
+(JNIEnv * env, jobject this){
+ LassoLogin * login;
+ char *result;
+
+ login = getCObject(env, this);
+
+ result = login->nameIdentifier;
+
+ return (*env)->NewStringUTF(env, result);
+}
+
+JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogin_getProtocolProfile
+(JNIEnv * env, jobject this){
+ LassoLogin * login;
+ int result;
+
+ login = getCObject(env, this);
+
+ result = login->protocolProfile;
+
+ return result;
+}
+
+JNIEXPORT jstring JNICALL Java_com_entrouvert_lasso_LassoLogin_getResponseDump
+(JNIEnv * env, jobject this){
+ LassoLogin * login;
+ char *result;
+
+ login = getCObject(env, this);
+
+ result = login->response_dump;
+
+ return (*env)->NewStringUTF(env, result);
+}
diff --git a/java/src/java/com/entrouvert/lasso/Lasso.java b/java/src/java/com/entrouvert/lasso/Lasso.java
index 884dfcbf..d8fda146 100644
--- a/java/src/java/com/entrouvert/lasso/Lasso.java
+++ b/java/src/java/com/entrouvert/lasso/Lasso.java
@@ -46,6 +46,22 @@ public class Lasso { // Lasso
static final public String libNameIdPolicyTypeFederated = "federated";
static final public String libNameIdPolicyTypeAny = "any";
+ static final public int loginProtocolProfileBrwsArt = 1;
+ static final public int loginProtocolProfileBrwsPost = 2;
+
+ /* AuthenticationMethods */
+ static final public String samlAuthenticationMethodPassword = "urn:oasis:names:tc:SAML:1.0:am:password";
+ static final public String samlAuthenticationMethodKerberos = "urn:ietf:rfc:1510";
+ static final public String samlAuthenticationMethodSecureRemotePassword = "urn:ietf:rfc:2945";
+ static final public String samlAuthenticationMethodHardwareToken = "urn:oasis:names:tc:SAML:1.0:am:HardwareToken";
+ static final public String samlAuthenticationMethodSmartcardPki = "urn:ietf:rfc:2246";
+ static final public String samlAuthenticationMethodSoftwarePki = "urn:oasis:names:tc:SAML:1.0:am:X509-PKI";
+ static final public String samlAuthenticationMethodPgp = "urn:oasis:names:tc:SAML:1.0:am:PGP";
+ static final public String samlAuthenticationMethodSPki = "urn:oasis:names:tc:SAML:1.0:am:SPKI";
+ static final public String samlAuthenticationMethodXkms = "urn:oasis:names:tc:SAML:1.0:am:XKMS";
+ static final public String samlAuthenticationMethodXmlDSig = "urn:ietf:rfc:3075";
+ static final public String samlAuthenticationMethodUnspecified = "urn:oasis:names:tc:SAML:1.0:am:unspecified";
+
static final public int signatureMethodRsaSha1 = 1;
static final public int signatureMethodDsaSha1 = 2;
diff --git a/java/src/java/com/entrouvert/lasso/LassoLogin.java b/java/src/java/com/entrouvert/lasso/LassoLogin.java
index d8229543..db1b9209 100644
--- a/java/src/java/com/entrouvert/lasso/LassoLogin.java
+++ b/java/src/java/com/entrouvert/lasso/LassoLogin.java
@@ -44,7 +44,7 @@ public class LassoLogin extends LassoProfileContext { // LassoLogin
LassoUser user,
String dump);
- native public int buildArtifactMsg(int authenticationResult,
+ native public int buildArtifactMsg(boolean authenticationResult,
String authenticationMethod,
String reauthenticateOnOrAfter,
int method);
@@ -67,6 +67,14 @@ public class LassoLogin extends LassoProfileContext { // LassoLogin
native public int initRequest(String responseMsg,
int responseMethod);
+ native public String getAssertionArtifact();
+
+ native public String getNameIdentifier();
+
+ native public int getProtocolProfile();
+
+ native public String getResponseDump();
+
native public boolean mustAuthenticate();
native public int processAuthnResponseMsg(String authnResponseMsg);
diff --git a/java/tests/LoginTest.java b/java/tests/LoginTest.java
index 018e8545..3b97bd52 100644
--- a/java/tests/LoginTest.java
+++ b/java/tests/LoginTest.java
@@ -77,30 +77,63 @@ public class LoginTest extends TestCase {
}
public void test02_serviceProviderLogin() {
+ boolean userAuthenticated;
+ int method;
+ LassoAuthnRequest authnRequest;
+ LassoLogin idpLoginContext, spLoginContext;
+ LassoServer idpContext, spContext;
+ String artifact, authenticationMethod, authnRequestQuery, authnRequestUrl, idpContextDump,
+ nameIdentifier, relayState, responseMsg, responseQuery, responseUrl, spContextDump,
+ soapEndpoint, soapRequestMsg;
+
// Service provider login using HTTP redirect.
- String spContextDump = generateServiceProviderContextDump();
+ spContextDump = generateServiceProviderContextDump();
assertNotNull(spContextDump);
- LassoServer spContext = new LassoServer(spContextDump);
- LassoLogin spLoginContext = new LassoLogin(spContext, null);
+ spContext = new LassoServer(spContextDump);
+ spLoginContext = new LassoLogin(spContext, null);
assertEquals(spLoginContext.initAuthnRequest(
"https://identity-provider:1998/liberty-alliance/metadata"), 0);
- LassoAuthnRequest authnRequest = (LassoAuthnRequest) spLoginContext.getRequest();
+ authnRequest = (LassoAuthnRequest) spLoginContext.getRequest();
authnRequest.setPassive(false);
authnRequest.setNameIdPolicy(Lasso.libNameIdPolicyTypeFederated);
authnRequest.setConsent(Lasso.libConsentObtained);
- authnRequest.setRelayState("fake");
+ relayState = "fake";
+ authnRequest.setRelayState(relayState);
assertEquals(spLoginContext.buildAuthnRequestMsg(), 0);
- String authnRequestUrl = spLoginContext.getMsgUrl();
- String authnRequestMsg = authnRequestUrl.substring(authnRequestUrl.indexOf("?") + 1);
- int method = Lasso.httpMethodRedirect;
+ authnRequestUrl = spLoginContext.getMsgUrl();
+ authnRequestQuery = authnRequestUrl.substring(authnRequestUrl.indexOf("?") + 1);
+ method = Lasso.httpMethodRedirect;
// Identity provider singleSignOn, for a user having no federation.
- String idpContextDump = generateIdentityProviderContextDump();
+ idpContextDump = generateIdentityProviderContextDump();
assertNotNull(idpContextDump);
- LassoServer idpContext = new LassoServer(idpContextDump);
- LassoLogin idpLoginContext = new LassoLogin(idpContext, null);
- assertEquals(idpLoginContext.initFromAuthnRequestMsg(authnRequestMsg, method), 0);
+ idpContext = new LassoServer(idpContextDump);
+ idpLoginContext = new LassoLogin(idpContext, null);
+ assertEquals(idpLoginContext.initFromAuthnRequestMsg(authnRequestQuery, method), 0);
assertTrue(idpLoginContext.mustAuthenticate());
+
+ userAuthenticated = true;
+ authenticationMethod = Lasso.samlAuthenticationMethodPassword;
+ assertEquals(idpLoginContext.getProtocolProfile(), Lasso.loginProtocolProfileBrwsArt);
+ assertEquals(idpLoginContext.buildArtifactMsg(
+ userAuthenticated, authenticationMethod, "FIXME: reauthenticateOnOrAfter",
+ Lasso.httpMethodRedirect), 0);
+ responseUrl = idpLoginContext.getMsgUrl();
+ responseQuery = responseUrl.substring(responseUrl.indexOf("?") + 1);
+ responseMsg = idpLoginContext.getResponseDump();
+ artifact = idpLoginContext.getAssertionArtifact();
+ nameIdentifier = idpLoginContext.getNameIdentifier();
+ method = Lasso.httpMethodRedirect;
+
+ // Service provider assertion consumer.
+ spContextDump = generateServiceProviderContextDump();
+ assertNotNull(spContextDump);
+ spContext = new LassoServer(spContextDump);
+ spLoginContext = new LassoLogin(spContext, null);
+ assertEquals(spLoginContext.initRequest(responseQuery, method), 0);
+ assertEquals(spLoginContext.buildRequestMsg(), 0);
+ soapEndpoint = spLoginContext.getMsgUrl();
+ soapRequestMsg = spLoginContext.getMsgBody();
}
public static Test suite() {