我一直在收到“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
答案 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门户在新门户中报告了无效的端点。