Ich möchte eine SAML-Anfrage an meinen IDP (Azure AD) senden, aber ich bin mir nicht sicher, wie ich die Anfrage überhaupt senden soll.HowTo eine SAML-Anfrage senden?
Zuerst habe ich OpenSAML verwendet, um eine AuthRequest zu erstellen. Was ich als String kodiert habe.
Nun wollte ich ApacheHttpClient verwenden, um die Anfrage zu senden und die Antwort zu lesen, und ich bin mir nicht sicher, ob OpenSAML http sending Methoden überhaupt bietet, meine Idee war, dafür Apatches HttpClient zu verwenden.
String encodedAuthRequest = generateAuthRequest();
String url = "http://myidp/samlendpoint";
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
// add request header
request.addHeader("User-Agent", USER_AGENT);
// what is to add else?
HttpResponse response = client.execute(request);
ich jetzt stecken, da ich bin nicht sicher, wie der Antrag auf Einrichtung, braucht es einen Abfrageparameter wie ?saml=....
in GET sein oder muss ich als POST die codierte SAML-Antwort in den Körper gelegt. .
Kann jemand helfen oder dieses Problem klären?
Update von Guillaumes Antwort:
Ich habe dies aus der IDPs Metadata:
<IDPSSODescriptor>
<SingleSignOnService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://myidp/saml2" />
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://myidp/saml2" />
ich habe einige Informationen zu meiner Frage hinzugefügt. – Gobliins
Sie können also entweder Redirect- oder POST-Bindungen verwenden, die ganz allgemein sind. – Guillaume
POST-Bindung wird einfacher, Sie müssen nicht erst die Anfrage DEFLATE, nur um Base64 es dann als Formulardaten übergeben (mit dem gleichen Namen SAMLRequest) – Guillaume