Я хочу отправить запрос SAML моему IDP (Azure AD), но не знаю, как отправить запрос вообще.Как отправить запрос SAML?
Сначала я использовал OpenSAML для создания AuthRequest. Который я закодировал как String.
Теперь я хотел использовать ApacheHttpClient для отправки запроса и чтения ответа, и я не уверен, что OpenSAML предоставляет методы отправки http вообще, поэтому моя идея заключалась в том, чтобы использовать Apache HttpClient для этого пока.
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);
Я застрял в настоящее время, так как я не знаю, как настроить запрос, это должно быть параметром запроса, как ?saml=....
в GET или же я должен поставить закодированный ответ SAML в теле, как POST. .
Может кто-нибудь помочь или прояснить эту проблему?
Обновление от Guillaumes ответа:
Я это от ВПЛ МЕТАДАННЫЕ:
<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" />
Я добавил некоторую информацию на мой вопрос. – Gobliins
, поэтому вы можете использовать переадресацию или привязки POST, которые являются довольно обычными. – Guillaume
Связывание POST будет проще, вам не нужно сначала отбрасывать запрос, а только base64, а затем передавать его как данные формы (с тем же именем SAMLRequest) – Guillaume