This is the raw code for the webpage. It can also be found attached as an .html on this article. All credit is due to Dan Malone of Cal Poly San Luis Obispo.
To install, just save this file locally and open it in a web browser: SAMLRequestGenerator.html
SAMLRequestGenerator.html SAMLRequestGenerator.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>SAML AuthnRequest Generator</title>
<style type="text/css">
.button {
border: 1px outset black;
border-radius:10px;
background-color: #d1d1e0;
height:50px;
width:300px;
cursor:pointer;
font-size:larger;
}
.button:hover {
background-color: #427730;
color:white;
}
td {
vertical-align:top;
}
</style>
</head>
<body>
<h1>SAML AuthnRequest Generator</h1>
<h1>Step 1 - Parse SAML Parameters</h1>
This step decodes redirect-based SAML AuthnRequests. You can skip it if you already have the XML.
<form id=samlSource>
Original Request URL:<br>
<textarea autofocus cols=80 rows=15 id=InputRequestURL placeholder="Paste the source request url here">
</textarea>
<br>
<button class="button" type="button" onclick="inputAll()">Parse the SAML AuthnRequest</button>
</form>
<script>
function inputSAMLRequest() {
samlRequestURL = document.getElementById('InputRequestURL');
samlRequestString=document.getElementById('ModifySAMLRequest');
regex=/[?|&]SAMLRequest=([^&]*)/;
match=regex.exec(samlRequestURL.value);
if(match != null) {
osr=match[1];
osrDecoded=atob(decodeURIComponent(osr));
osrInflated=zip_inflate(osrDecoded);
samlRequestString.value=osrInflated;
// samlRequestString.value=XMLTree(osrInflated);
} else {
samlRequestString.value="";
samlRequestString.placeholder="SAMLRequest parameter not found";
}
}
function inputRelayState() {
samlRequestURL = document.getElementById('InputRequestURL');
modifyRelayState=document.getElementById('ModifyRelayState');
regex=/[?|&]RelayState=([^&]*)/;
match=regex.exec(samlRequestURL.value);
if(match != null) {
modifyRelayState.value=decodeURIComponent(match[1]);
} else {
modifyRelayState.value="";
modifyRelayState.placeholder="RelayState not found";
}
}
function inputAll() {
inputSAMLRequest();
inputRelayState();
}
</script>
</form>
<h1>Step 2 - Modify SAML Parameters</h1>
<form id=samlSetup>
<table>
<tr>
<th>Parameter</th>
<th>Value</th>
<th></th>
</tr>
<tr>
<