Login skeleton for ColdFusion is now fully working.
This commit is contained in:
parent
5e5e3c5350
commit
f37ed70f10
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
@ -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>
|
Loading…
Reference in New Issue