2012-08-02 12 views
24

Wir haben eine ASP.NET-Anwendung mit WIF. Unsere web.config-Datei hat einen Abschnitt wie folgt aus:Mit WIF, was ist der Unterschied zwischen AudienceUris und Realm?

<audienceUris> 
    <add value="https://someapp.mycompany.com/App/" /> 
</audienceUris> 
<federatedAuthentication> 
    <wsFederation passiveRedirectEnabled="true" issuer="https://adfs.mycompany.com/adfs/ls/" realm="https://someapp.mycompany.com/App/" requireHttps="true" /> 
    <cookieHandler requireSsl="false" /> 
</federatedAuthentication> 

Jedes Beispiel sehe ich sowohl die audienceUris und realm sind der gleiche Wert. Was ist der Unterschied zwischen diesen beiden? Brauchen wir sie beide?

Antwort

35

Die realm ist die eindeutige Kennung der Anwendung - die Identität, die beim Anmelden an die STS gesendet wird. Mit dem Element audienceUris wird jedoch begrenzt, von welchen Anwendungen die Token akzeptiert werden.

Zum Beispiel könnte sich ein Benutzer anmelden und ihr Token von einer anderen vertrauenden Seite erhalten und dann zu Ihrer Anwendung navigieren. Wenn der Bereich dieser Anwendung in der audienceUris aufgeführt ist, wird das Token akzeptiert und sie können auf die Site zugreifen (vorausgesetzt, dass die Anwendung den Cookie auch lesen kann).

Wenn Sie ein Token als einen Pass betrachten, ist es, als würde Großbritannien sagen, dass es Leute mit einem US- oder britischen Pass zulassen wird.

Als Antwort auf Ihre Frage sollten Sie beide enthalten, aber sie können gleich sein.

+0

Danke, das hilft. Einer der Gründe für diese Frage war, dass wir uns gefragt haben, ob/wie es möglich ist, direkt mit einem Server in einer Farm zu verbinden. Wenn sich die Anwendung also in einer Farm befindet, sind die Parameter "audienceUris" und "realm" die URL der Farm. Aber was, wenn wir direkt mit einer der Maschinen in der Farm verbunden werden wollten? Ist das möglich? – Bryan

+2

Der Bereich ist nicht wirklich die URL. Es ist einfach eine Kennung. Es könnte https://www.iloveadfsandidontcare.com oder eine beliebige URI sein, solange es für Ihre STS einzigartig ist. Die tatsächliche URL des Endpunkts ist in AD FS definiert und definiert, wo die Anmeldeantwort gesendet wird. Wenn Sie also direkt zu einer bestimmten URL in der Farm wechseln möchten, konfigurieren Sie dies in AD FS. –

+0

Wenn ich den Realm in meiner web.config zu diesem URI ändere, den ich habe, und ich halte die audienceUris gleich (die tatsächliche URL meiner App), bekomme ich eine Fehlermeldung, dass die beiden übereinstimmen müssen. (AudienceUriValidationFailedException: ID1038: Die AudienceRestrictionCondition war nicht gültig, da die angegebene Zielgruppe in AudienceUris nicht vorhanden ist.) Es sieht also so aus, als ob sie beide benötigt werden und beide identisch sein müssen. – Bryan