diff options
| author | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-09-07 17:09:09 +0000 |
|---|---|---|
| committer | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-09-07 17:09:09 +0000 |
| commit | f37ed70f1014752f0a9158392780c801b48db613 (patch) | |
| tree | fa30ab948c6cc264ad968eabf05bad13e8aed746 /java | |
| parent | 5e5e3c53507bb420c01ea11edadf965777f6af25 (diff) | |
| download | lasso-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.java | 58 | ||||
| -rw-r--r-- | java/coldfusion/web/assertionConsumer.cfm | 45 | ||||
| -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> |
