Web API перенаправление не работает
Я пытаюсь реализовать проект, используя SAML и SPO по инициативе SP. Мой проект использует MS Web API.
Ниже приведен код в моем контроллере, который инициирует рукопожатие SAML с использованием CompenentSpace в качестве библиотеки SAML:
public IHttpActionResult SAMLInitiateRequestToIdp(string DistrictToken)
{
_idsRepository.SsoLogEntry( ServerAddress, "SAML/ADFS", null, null, null, 0, "Student", "Info Only", SAMLConfiguration.Current.PartnerIdentityProviderConfigurations + " "/* + Response.ToString()*/, null, null, null);
string partnerIdP = "simon";
try
{
MapDistrictClaim = false;
DistrictClaim = DistrictToken;
partnerIdP = _samlHelper.initiateRequestToSp(DistrictClaim, ServerAddress);
SAMLServiceProvider.InitiateSSO(System.Web.HttpContext.Current.Response, null, partnerIdP);
return Ok(new { data = "get ok" });
}
catch (Exception ex)
{
return Ok(new { data = "get ok" });
}
}
Не беспокойтесь о предложении "catch". Я знаю, что это ничего не делает.
Проблема, с которой я сталкиваюсь, заключается в том, что я получаю следующий ответ при вызове этого метода:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="https://adfstest.mywebsite.com/adfs/ls/idpinitiatedsignon?SAMLRequest=AAAfZLLbtswEEV%2FReBe1tsPwjLgSDFqIG2FyOmim4IixzYBiVQ5lNsC%2BfhQctKmC2c7jzv3zMwaWdf2dDvYs3qEnwOg9fZlTn6INFs0i0Xjz8MF%2BGlzjPxlkzB%2FnsJKLJciTpuIeN%2FAoNQqJ%2FEsJN4ecYC9QsuUdaEwyvxw5UfJIU5oGNM4ma3C5DvxSjdFKmanzrO1PdIgYOKI1iVmnBkAw80gUarTjOtuygUtBlL0UkkrmQWB8qS0It5OGw6T%2F5wcWYsw%2BqgYorzA30hltNVct3dSCSeak8EoqhlKpIp1gNRyWm8%2FP1DHQZtrEdJPh0PlV1%2FrA%2FG2iGBGw4VWOHRgajAXyeHp8eEfAqK%2BRXCJg1H%2Flszk8CIFmC%2FOTk6ieRY%2Fh2mYbLO0cDsvMz8tw3t%2FWawiv5jv7nb3izTLVvFzzZRXSjhp70nJowTh1fysdeuCaI3klni%2Fu1YhnQ79MXj%2FuiWyWY%2FVdLqnedf%2FcTt7gyObsazgtWt5BXzD24t%2BHbwTv07q6Yi9LyvdSv5nPGnH7O1h0SyaIlL4x6mUDgp74BO%2Fu1Xb6l%2BFAfclObFmcNsNNtep%2F3%2F65gU%3D&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=Dv9lr04SrKwRPxKs%2FLpqAqDsWPMcS%2BIFy%2FsLLWcAivf8s6WiV4dvei5LBa4MnYy4hXAyVYJ0JM7L6pBXaPCdz%2Fb5UtF525%2FQi%2Bpv8alyaplWJbXfgXWvjuRY%2FTxpnNN0wVGk7f6ZkCAmDEeZcSNNwW2YJGBvTk5kUORvQq1VhsMhZZmf3Q0VDRdjrTSzQ9K%2BbVEptm9Ed86Jb5I%2BYutc1U43FvSIQTNkpm8phC%2F3BlfyhbDRdMn3sSmCNkyel86oXfl7pnnozpDqPFWc6SRWaWJ%2BMv1IWs2SzcHbfvRAnkTdxx3Gokp%2Fd74f77oJLkUYNKgqsFIhrc6qSNqjO29heA%3D%3D">here</a>.</h2>
</body></html>
{"data":"get ok"}
Когда я отправил Компоненту Пространство по электронной почте о своей первоначальной проблеме, я получил ответ: "Когда вы вызываете SAMLServiceProvider.InitiateSSO, вы отправляете запрос SAML authn с помощью привязки HTTP-Redirect.
Это означает, что редирект 302 возвращается браузеру. Например, см. Ниже.
Затем браузер должен выполнить GET для этого URL, который включает закодированный SAMLRequest."
Есть ли причина, по которой я получаю этот ответ вместо перенаправления браузера?
1 ответ
Ответ в том, что я вернул OK, когда я должен был вернуть перенаправление с соответствующим URL:
SAMLServiceProvider.InitiateSSO(System.Web.HttpContext.Current.Response, null, partnerIdP);
return Redirect(System.Web.HttpContext.Current.Response.RedirectLocation);