summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorEmmanuel Raviart <eraviart@entrouvert.com>2004-09-07 17:09:09 +0000
committerEmmanuel Raviart <eraviart@entrouvert.com>2004-09-07 17:09:09 +0000
commitf37ed70f1014752f0a9158392780c801b48db613 (patch)
treefa30ab948c6cc264ad968eabf05bad13e8aed746 /java
parent5e5e3c53507bb420c01ea11edadf965777f6af25 (diff)
downloadlasso-f37ed70f1014752f0a9158392780c801b48db613.tar.gz
lasso-f37ed70f1014752f0a9158392780c801b48db613.tar.xz
lasso-f37ed70f1014752f0a9158392780c801b48db613.zip
Login skeleton for ColdFusion is now fully working.
Diffstat (limited to 'java')
-rw-r--r--java/coldfusion/src/CFLasso.java58
-rw-r--r--java/coldfusion/web/assertionConsumer.cfm45
-rw-r--r--java/coldfusion/web/singleSignOn.cfm (renamed from java/coldfusion/web/login.cfm)4
3 files changed, 104 insertions, 3 deletions
diff --git a/java/coldfusion/src/CFLasso.java b/java/coldfusion/src/CFLasso.java
index 5de95f2d..9233379c 100644
--- a/java/coldfusion/src/CFLasso.java
+++ b/java/coldfusion/src/CFLasso.java
@@ -40,19 +40,32 @@
*/
import com.entrouvert.lasso.AuthnRequest;
+import com.entrouvert.lasso.Identity;
import com.entrouvert.lasso.lassoConstants;
import com.entrouvert.lasso.lasso;
import com.entrouvert.lasso.Login;
import com.entrouvert.lasso.Server;
+import com.entrouvert.lasso.Session;
public class CFLasso {
/* A simple service provider */
+ protected Login login = null;
protected Server server = null;
public String idpProviderId = null;
+ public void acceptSso() {
+ login.acceptSso();
+ }
+
+ public void assertionConsumer(String queryString) {
+ login = new Login(server);
+ login.initRequest(queryString, lassoConstants.httpMethodRedirect);
+ login.buildRequestMsg();
+ }
+
public void configure(String metadataPath, String publicKeyPath, String privateKeyPath,
String idpProviderId, String idpMetadataPath, String idpPublicKeyPath) {
server = new Server(metadataPath, publicKeyPath, privateKeyPath, null,
@@ -61,9 +74,40 @@ public class CFLasso {
server.addProvider(idpMetadataPath, idpPublicKeyPath, null);
}
+ public String getIdentityDump() {
+ Identity identity = login.getIdentity();
+ if (identity != null)
+ return identity.dump();
+ else
+ return null;
+ }
+
+ public String getMsgBody() {
+ return login.getMsgBody();
+ }
+
+ public String getMsgRelayState() {
+ return login.getMsgRelayState();
+ }
+
+ public String getMsgUrl() {
+ return login.getMsgUrl();
+ }
+
+ public String getNameIdentifier() {
+ return login.getNameIdentifier();
+ }
+
+ public String getSessionDump() {
+ Session session = login.getSession();
+ if (session != null)
+ return session.dump();
+ else
+ return null;
+ }
+
public String login(String relayState) {
AuthnRequest authnRequest;
- Login login;
String authnRequestUrl;
login = new Login(server);
@@ -92,4 +136,16 @@ public class CFLasso {
System.out.print("Identity provider single sign-on URL = ");
System.out.println(ssoUrl);
}
+
+ public void processResponseMsg(String responseMsg) {
+ login.processResponseMsg(responseMsg);
+ }
+
+ public void setIdentityFromDump(String identityDump) {
+ login.setIdentityFromDump(identityDump);
+ }
+
+ public void setSessionFromDump(String sessionDump) {
+ login.setSessionFromDump(sessionDump);
+ }
}
diff --git a/java/coldfusion/web/assertionConsumer.cfm b/java/coldfusion/web/assertionConsumer.cfm
new file mode 100644
index 00000000..9c882a10
--- /dev/null
+++ b/java/coldfusion/web/assertionConsumer.cfm
@@ -0,0 +1,45 @@
+<html>
+ <head>
+ <title>Lasso</title>
+ </head>
+ <body>
+ <h1>Lasso</h1>
+<!--
+ <cfdump var="#QUERY_STRING#">
+ <cfobject type="java" name="sys" class="java.lang.System" action="create">
+ <cfset properties=sys.getProperties()>
+ <cfdump var="#properties#">
+-->
+ <cfobject action="create" type="Java" class="CFLasso" name="lasso">
+ <cfset lasso.init()>
+ <cfset lasso.configure("/opt/coldfusionmx/wwwroot/lasso/data/metadata.xml", "/opt/coldfusionmx/wwwroot/lasso/data/public-key-la.pem", "/opt/coldfusionmx/wwwroot/lasso/data/private-key-raw-la.pem", "https://idp2/metadata", "/opt/coldfusionmx/wwwroot/lasso/data/metadata-idp.xml", "/opt/coldfusionmx/wwwroot/lasso/data/idp2-la/public-key.pem")>
+ <cfset lasso.assertionConsumer(#QUERY_STRING#)>
+ <cfset soapUrl=lasso.getMsgUrl()>
+ <cfset soapBody=lasso.getMsgBody()>
+ <cfset relayState=lasso.getMsgRelayState()>
+<!--
+ <cfdump var="#soapUrl#">
+ <cfdump var="#soapBody#">
+-->
+ <cfhttp method="POST" url="#soapUrl#">
+ <cfhttpparam type="XML" name="body" value="#soapBody#">
+ </cfhttp>
+<!--
+ <cfdump var="#cfhttp.statuscode#">
+ <cfdump var="#cfhttp.header#">
+ <cfdump var="#cfhttp.fileContent#">
+-->
+ <cfset lasso.processResponseMsg(#cfhttp.fileContent#)>
+ <!-- TODO: Retrieve identity dump and session dump in your users and sessions databases. -->
+ <!-- cfset lasso.setIdentityFromDump(#identityDump#) -->
+ <!-- cfset lasso.setSessionFromDump(#sessionDump#) -->
+ <cfset lasso.acceptSso()>
+ <cfset identityDump=lasso.getIdentityDump()>
+ <cfset sessionDump=lasso.getSessionDump()>
+ <!-- TODO: Store identity dump and session dump into your users and sessions databases. -->
+ <cfoutput>
+ <p>User is now logged. RelayState = #relayState#</p>
+ </cfoutput>
+ </body>
+</html>
+
diff --git a/java/coldfusion/web/login.cfm b/java/coldfusion/web/singleSignOn.cfm
index 40c60482..a67809b5 100644
--- a/java/coldfusion/web/login.cfm
+++ b/java/coldfusion/web/singleSignOn.cfm
@@ -11,8 +11,8 @@
-->
<cfobject action="create" type="Java" class="CFLasso" name="lasso">
<cfset lasso.init()>
- <cfset ssoUrl=lasso.configure("/opt/coldfusionmx/wwwroot/data/metadata.xml", "/opt/coldfusionmx/wwwroot/data/public-key-la.pem", "/opt/coldfusionmx/wwwroot/data/private-key-raw-la.pem", "https://idp2/metadata", "/opt/coldfusionmx/wwwroot/data/idp2-la/metadata.xml", "/opt/coldfusionmx/wwwroot/data/idp2-la/public-key.pem")>
- <cfset ssoUrl=lasso.login("important string")>
+ <cfset lasso.configure("/opt/coldfusionmx/wwwroot/lasso/data/metadata.xml", "/opt/coldfusionmx/wwwroot/lasso/data/public-key-la.pem", "/opt/coldfusionmx/wwwroot/lasso/data/private-key-raw-la.pem", "https://idp2/metadata", "/opt/coldfusionmx/wwwroot/lasso/data/metadata-idp.xml", "/opt/coldfusionmx/wwwroot/lasso/data/idp2-la/public-key.pem")>
+ <cfset ssoUrl=lasso.login("important")>
<cfoutput>Identity provider single sing-on URL to redirect to = #ssoUrl#</cfoutput>
<cflocation url=#ssoUrl#>
</body>