diff options
| author | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-07-22 10:52:11 +0000 |
|---|---|---|
| committer | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-07-22 10:52:11 +0000 |
| commit | 5c6f115243a2ec13a2e077388957fabd5d59cdfe (patch) | |
| tree | 870612007ae97e63883431caee7ff446ae822aa4 /java | |
| parent | deee550561978259663cc0f1e123d6acb5835149 (diff) | |
| download | lasso-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.c | 49 | ||||
| -rw-r--r-- | java/src/java/com/entrouvert/lasso/Lasso.java | 16 | ||||
| -rw-r--r-- | java/src/java/com/entrouvert/lasso/LassoLogin.java | 10 | ||||
| -rw-r--r-- | java/tests/LoginTest.java | 57 |
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() { |
