Je souhaite envoyer une demande SAML à mon IDP (Azure AD), mais je ne suis pas sûr de la manière d'envoyer la requête.Comment envoyer une demande SAML?
D'abord, j'ai utilisé OpenSAML pour créer une AuthRequest. Lequel j'ai encodé en tant que chaîne.
Maintenant, je voulais utiliser ApacheHttpClient pour envoyer la demande et lire la réponse et je ne suis pas sûr si OpenSAML fournit des méthodes d'envoi http du tout mon idée était d'utiliser Apaches HttpClient pour cela pour le moment.
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);
Je suis coincé maintenant depuis que je ne suis pas sûr comment configurer la demande, at-il besoin d'être un paramètre de requête comme ?saml=....
GET ou dois-je mettre la réponse SAML codée dans le corps comme POST.
Quelqu'un peut-il aider ou clarifier ces problèmes?
Mise à jour de réponse Guillaumes:
Je cela du MetaData déplacés internes:
<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" />
J'ai ajouté quelques informations à ma question. – Gobliins
de sorte que vous pouvez utiliser les liaisons Redirect ou POST, qui sont assez communs. – Guillaume
POST contraignant sera plus facile, vous n'avez pas besoin de DEFLATER la demande d'abord, juste pour la base64, puis le passer en tant que données de formulaire (avec le même nom SAMLRequest) – Guillaume