2016-11-14 18 views
0

我不断收到“AADSTS75005:请求不是有效的Saml2协议消息”。当我尝试将AuthnRequest发送到Azure AD/idp时。将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> 

用户被{从端点SAML-P登录端点在天青应用}重定向到https://login.microsoftonline.com//SAML2?SAMLRequest = {编码SAML请求除去}

相同的作品当我发送它的其他SAML2 IDP(使用SimpleSAMLphp)

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

+0

你是怎么压缩它的?您是手动构建此请求还是使用第三方库来处理它?你能否提供编码请求的样本? – Steve

+0

你提到了一个主页URL,但是这应该是应用程序ID URI。确保这是正确的,如果这是正确的,那么您提交请求的方式可能有问题。 – juunas

+0

Steve:我使用DeflateStream(output,CompressionMode.Compress)来压缩它。我手动构建请求,不使用任何库。将用编码后的请求更新问题。 Juumas:我尝试过不同的URI。应用程序ID(这只是一个Guid),主页URL(我猜这是认证响应的发布地点)。我只是用查询字符串参数发送的请求。 –

回答

0

我发现这个问题了这一点。我在新的Azure门户中创建了该应用程序。这表明端点是https://login.windows.net/ {身份识别码}/SAML2

我创造了老门户的新应用程序,现在它显示端点是https://login.microsoftonline.com/ {身份识别码}/SAML2

如果我看的这两个应用如果我在新门户中执行相同操作,则会显示https://login.windows.net/ {myid}/saml2这两个选项都是在新门户中创建的(一个在新门户中,另一个在旧门户中),它显示https://login.microsoftonline.com/ {myid}/saml2。 APS。

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

enter image description here

0

正如@Steve上面已经提到的,这个问题似乎是与正在放气的方式/编码鉴权请求。假设您使用.NET(您提到了DeflateStream),请尝试使用示例代码https://stackoverflow.com/a/25155050/983244

我也清楚了命名空间声明,以使您的AuthnRequest看起来像

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

如果我使用在线解码器https://idp.ssocircle.com/sso/toolbox/samlDecode.jsp并在问题中使用示例,它解码得很好,所以我不认为它应该与解压缩/编码请求相关...以及它的缩小/编码方式与您提及的链接以及我之前提到的相同。相同的代码适用于其他SAML2身份提供商。它可能是与查询字符串参数的名称的东西? ?SAMLRequest = xxx我找不到任何有关参数名称的信息。如果更改参数名称,我会得到相同的错误消息。 –