2017-06-07 4 views
1

Ich bin ein fantastischer Artikel , die für eine Web-App ist, SSO mit AWS Cognito mit einer SAML-Antwort von einem bestimmten IdP bereitzustellen. Hier ist das Diagramm für die Architektur: architectureSAML Antwort in URL ist zu lang

Also mein Problem ist am Ende, wenn API-G auf meine Website weiterleitet. Ich kann in den chrome/firefox dev tools sehen, dass die 302 redirect funktioniert und hat die richtige URL und die saml Antwort in der URL, aber dann kann die Seite nicht geladen werden. Chrome zeigt 'cancelled' und Firefox macht nichts damit.

Ich habe bemerkt, dass die gesamte URL-Länge etwa 8500 Zeichen ist und wenn ich es um 7500 Zeichen oder weniger mache, dann funktioniert es, aber größer als etwa 7500, dann bricht es.

Also warum hat es funktioniert für wer auch immer den Artikel geschrieben hat, aber ich kann es nicht bekommen? Der Fehler könnte anders sein als das, was ich denke, es scheint nur die Länge der URL zu sein.

Ich lokal eine Angular 4 App mit ng serve laufen, und die endgültige App wird eine einzelne Seite Anwendung aus einem S3-Bucket gehostet werden.

+0

Was ändern Sie, um die URL von 8500 Zeichen auf 7500 herabzusetzen? Welchen Dienst leitet der 301 genau um? –

+0

Ich löschte gerade Zeichen aus der SAML-Antwort direkt. Der 302 kommt von AWS API-G/Lambda und der Redirect ist ein GET zum S3-Bucket, der die Web-App hostet (da es sich um ein SPA und ein serverloses Setup handelt) – canada11

Antwort

1

Wenn Sie AWS CloudFront mit Ihrem S3-Bucket verwenden, gibt es ein URL-Limit von 8.192 Byte, das die Ursache des Problems zu sein scheint.

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html

Eine SAML-Antwort kann unterschiedliche Längen aus verschiedenen Gründen sein. Einige Gründe könnten sein:

  • inklusive öffentliche Zertifikat Unterzeichnung (und seine Variablen)
  • Attribut-Anweisung (Benutzerinformationen, die mit der Behauptung enthalten ist)

So vielleicht der Autor produzierte SAML Antworten, die führte zu einer kleineren Weiterleitungs-URL.

Darüber hinaus scheint es nichts in der RFC, die eine Begrenzung der URI-Länge diktiert, so dass ihre Server/Browser möglicherweise anders als Sie eingerichtet werden.

+0

Ich nehme das als Antwort für jetzt. Ja, ich war nicht in der Lage, genau das Problem zu bekommen, aber es sieht so aus, als ob wir nur noch mehr Sachen zu SAML hinzugefügt haben, die es größer machen. Ich werde auch viele Informationen über die Rollen, die die Person in AWS annehmen kann, angehen müssen, also bin ich vorerst eine andere Route gegangen. Was die Begrenzung der URI-Länge anbetrifft, war ich neugierig, in meinem Fall sollte ich genauso eingerichtet sein wie der Blog, dem ich folgte, der nur ein SPA in S3 (serverless setup) ist. Ich vermute, dass S3 ein Problem hat, wenn ein GET mit mehr als 7500 Zeichen kommt. – canada11

+1

Verwenden Sie CloudFront, um auf Ihren S3-Bucket zuzugreifen? Wenn das so ist, denke ich, dass Sie auf dem richtigen Weg sind. CloudFront hat ein URL-Limit von 8.192 Byte, und das sieht so aus, als ob es in dem Bereich ist, mit dem Sie dort arbeiten. http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html – vexdev

+0

DAS, könnten Sie das als eine tatsächliche Antwort oder zu Ihrer Antwort hinzufügen. Weil das ist es, verwende ich Cloudfront. Deshalb funktioniert es nicht. – canada11