正确的AuthnRequest到Azure AD / idp

时间:2016-11-14 14:37:45

标签: azure saml-2.0

我一直在收到“AADSTS75005:请求不是有效的Saml2协议消息。”当我尝试将AuthnRequest发送到Azure AD / idp时。

在我压缩之前,XML看起来像这样,转换为base64string并对邮件进行url编码。

<samlp:AuthnRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="ide13dd575-3f6c-4131-9b9d-e12c644cf18f" Version="2.0" IssueInstant="2016-11-14T14:28:27.5450323Z" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"><Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">{homepage url registered in azure app registrations}</Issuer></samlp:AuthnRequest>

用户正在重定向到https://login.microsoftonline.com/ {来自应用程序中的端点的SAML-P登录端点} / saml2?SAMLRequest = {encoded saml request removed}

当我将其发送到其他SAML2 idp(使用SimpleSAMLphp)时,同样有效

web浏览器将被重定向到https://login.windows.net/ {端点ID} / SAML2?SAMLRequest = jZBLasMwFEW3YjRXbKny72EbAqVgaCkkbQedBEVWiKktuXrP%2faytgy6pW6hJhoXQ6YV7OPf%2bfH1XqMdhgvVMR7exr7NFij7GwWHN5uDAa%2bwRnB4tAhnYru9uQa4SGC3pTpNmUXtds77rrCjy9KB4LpXian%2bV8aJLUl6Wpdknytg0y1n0ZAP23tVsQSxNxNm2Dkk7WqJEZFwILtSDlCBSkHIlZCbLtHhmZyU4uV4Wm4Inb%2fzAmurED%2f9ZoxFtoMWMNUeiCSGOx8%2fHTbu78WG3JW1e7t9sOAz%2bvYrP1KaK%2fx7X%2fAI%3D

2 个答案:

答案 0 :(得分:0)

正如@Steve上面已经提到的,问题似乎与你放弃/编码AuthenticationRequest的方式有关。尝试使用https://stackoverflow.com/a/25155050/983244上的示例代码,假设您使用的是.NET(您提到了DeflateStream)。

我还要清除命名空间声明,以便你的AuthnRequest看起来像

var width = document.getElementById('AAA').offsetWidth;
var winWidth = window.innerWidth;
var widthPercent = width / winWidth * 100;

答案 1 :(得分:0)

我发现了这个问题。我在新的天蓝色门户中创建了应用程序。它将端点显示为https://login.windows.net/ {myid} / saml2

我在旧门户网站中创建了一个新应用,现在它将端点显示为https://login.microsoftonline.com/ {myid} / saml2

如果我查看旧门户网站中创建的两个应用程序(一个在新门户中,一个在旧门户中),它会显示https://login.microsoftonline.com/ {myid} / saml2

如果我在新门户中执行相同操作,则会在两个aps上显示https://login.windows.net/ {myid} / saml2。

因此我的代码没有任何错误,但Azure AD门户在新门户中报告了无效的端点。

enter image description here