mirror of
https://github.com/unikent-ms1/simple-soap-ecp-test.git
synced 2025-01-22 09:19:59 +00:00
initial commit
This commit is contained in:
commit
3e5e9beef0
28
README.md
Normal file
28
README.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Simple SOAP ECP Test
|
||||||
|
====================
|
||||||
|
|
||||||
|
This simple script performs a test on a Basic Auth protected SAML2 ECP endpoint.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
The script defaults to impersonating an Office365 Azure based SP. Override by specifying the EntityID of the SP you wish to impersonate in the ```ENTITYID``` environment variable.
|
||||||
|
|
||||||
|
You also need to specify the registered endpoint that the request is pretending to come from. Again, this defaults to the Office365 endpoint. Override with ```ENDPOINT```.
|
||||||
|
|
||||||
|
You *MUST* specify a ```URL``` to make the request against. For a Shibboleth IDP this probably looks like ```https://idp.example.com/idp/profile/SAML2/SOAP/ECP```.
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
**The values for ```ENTITYID``` and ```ENDPOINT``` are the defaults.**
|
||||||
|
|
||||||
|
```
|
||||||
|
CRED=user:pass \
|
||||||
|
ENTITYID=urn:federation:MicrosoftOnline \
|
||||||
|
ENDPOINT=https://login.microsoftonline.com/login.srf \
|
||||||
|
URL=https://idp.example.com/idp/profile/SAML2/SOAP/ECP \
|
||||||
|
bash test.sh | xmllint --pretty 1 -
|
||||||
|
```
|
||||||
|
|
||||||
|
|
22
template.xml
Normal file
22
template.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<SOAP-ENV:Envelope
|
||||||
|
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
|
||||||
|
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
|
||||||
|
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
|
||||||
|
xmlns:ecp="urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp">
|
||||||
|
<SOAP-ENV:Header>
|
||||||
|
</SOAP-ENV:Header>
|
||||||
|
<SOAP-ENV:Body>
|
||||||
|
<samlp:AuthnRequest
|
||||||
|
ID="__RANDOM_STRING__"
|
||||||
|
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:PAOS"
|
||||||
|
AssertionConsumerServiceURL="__AssertionConsumerServiceURL__"
|
||||||
|
IssueInstant="__NOW__"
|
||||||
|
Version="2.0"
|
||||||
|
>
|
||||||
|
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
|
||||||
|
__REMOTE_ENTITYID__
|
||||||
|
</saml:Issuer>
|
||||||
|
<samlp:NameIDPolicy AllowCreate="1"/>
|
||||||
|
</samlp:AuthnRequest>
|
||||||
|
</SOAP-ENV:Body>
|
||||||
|
</SOAP-ENV:Envelope>
|
29
test.sh
Executable file
29
test.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
### Simple SOAP ECP Test
|
||||||
|
|
||||||
|
TEMPLATE=template.xml
|
||||||
|
NOW=$(date -u '+%FT%H:%M:%SZ')
|
||||||
|
ID=$(echo "${NOW}-$$" | shasum | cut -d ' ' -f 1)
|
||||||
|
ENTITYID=${ENTITYID:-urn:federation:MicrosoftOnline}
|
||||||
|
ENDPOINT=${ENDPOINT:-https://login.microsoftonline.com/login.srf}
|
||||||
|
URL=${URL:-http://localhost/}
|
||||||
|
|
||||||
|
CRED=${CRED:-anonymous:anonymous}
|
||||||
|
|
||||||
|
ENDPOINT_ESCAPED="$(echo $ENDPOINT | sed -e 's/[\/&]/\\&/g')"
|
||||||
|
|
||||||
|
REQUEST=$(cat $TEMPLATE |
|
||||||
|
sed "s/__NOW__/$NOW/" |
|
||||||
|
sed "s/__RANDOM_STRING__/$ID/" |
|
||||||
|
sed "s/__REMOTE_ENTITYID__/$ENTITYID/" |
|
||||||
|
sed "s/__AssertionConsumerServiceURL__/$ENDPOINT_ESCAPED/")
|
||||||
|
|
||||||
|
echo $REQUEST | xmllint --pretty 1 -
|
||||||
|
|
||||||
|
echo $REQUEST |
|
||||||
|
curl -k \
|
||||||
|
-d @- \
|
||||||
|
-H "Content-Type: application/vnd.paos+xml" \
|
||||||
|
--basic -u $CRED \
|
||||||
|
$URL
|
Loading…
x
Reference in New Issue
Block a user