私はIDP(Azure AD)にSAMLリクエストを送信したいのですが、要求をどのように送信するかわかりません。SAMLリクエストの送信方法
まず、OpenSAMLを使用してAuthRequestを構築しました。どちらが私は文字列としてエンコードされます。
私はApacheHttpClientを使用してリクエストを送信し、応答を読んでいましたが、OpenSAMLがHTTP送信メソッドを提供しているかどうかはわかりません。
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);
私はセットアップに要求は、それがGETで?saml=....
のようなクエリパラメータである必要がないかを確認していないか、私はPOSTとして体内でエンコードされたSAML応答を入れて持っているので、私は今、立ち往生しています。 。
誰かがこの問題を助けることができますか?ギヨームの答えから
更新:
私は国内避難民メタデータから、これを持っている:
<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
だから、RedirectやPOSTバインディングのいずれかを使うことができます。これは非常にコモンです。 – Guillaume
POSTバインディングが簡単になります。最初にリクエストをDEFLATEする必要はありません。これは、base64にフォームデータ(SAMLRequestと同じ名前)を渡します。 – Guillaume