1

ADFS 認証による Passport 認証を行う 1 つの SharePoint アプリケーション (App1) があります。ADFS認証もある別のサブドメイン(App2)に別のasp.netアプリケーションがあります。最初のアプリケーションから、他のアプリケーションでホストされているコントロールへの $.ajax (jquery) 呼び出しがあります。

問題は、FedAuth Cookie が App1 から App2 にポストされなかったことです。HTTP トレースで、FedAuth Cookie ドメイン名がマシン固有であることがわかりました。web.config の「federatedAuthentication」セクション -> cookieHandler で、ドメインを「microsoft.com」と記載しました。これにより、FedAuth がドメイン プロパティにマシン名を持たない問題が解決されました。

この変更の後、次のエラーが発生しました: ID4230: SecurityToken の形式が適切ではありませんでした。要素名 'SecurityContextToken' が必要ですが、'SP' が見つかりました。

ネットでヘルプが見つかりませんでした。cookieHandler のパスと name 属性を変更しようとしましたが、問題は解決しませんでした。名前を変更すると、2 つの FedAuth Cookie が作成されます。1 つは FedAuth 名で、もう 1 つは新しい名前です。

特記事項: 認証後に App1 を開き、App2 の URL をブラウザーに貼り付けると、サイレント認証が正常に機能し、App2 の制御を確認できます。問題は、Ajax を介して App2 コントロールを呼び出した場合にのみ発生します。$.ajax を「資格情報 = true -> XMLHTTPRequest オブジェクト) で呼び出そうとしましたが、役に立ちませんでした。

Ajax 呼び出しを介してサイレント認証を正常に機能させるためのヘルプ ポインターはありますか?

4

1 に答える 1

2

以下は私のシナリオでした。Security Token Service Provider (STS Provider) WIF Web アプリケーションと 3 つの Web クライアントまたは Relying Party STSClient1、STSClient2、Sharepoint Web クライアントがあります。

すべてのクライアントと stsprovider が同じドメインにある場合は、あなたが言及したのと同じエラーに直面しましたが、すべてが異なるドメインにある場合はそうではありませんでした。

この記事ではhttp://msdn.microsoft.com/en-us/magazine/ff872350.aspx

と言われました

Cookie の名前とパスについては、名前はデフォルトで FedAuth (アプリケーション ディレクトリへのパス) になります。特にソリューション内の多くの RP アプリケーションが同じドメインを共有している場合は、Cookie に一意の名前を指定すると便利です。逆に、同じドメインの複数のアプリで Cookie を共有する場合は、汎用パスを指定することもできます。

そこで、各クライアントに行き、以下のようにクッキーに一意の名前を付けました

<federatedAuthentication>
    <wsFederation passiveRedirectEnabled="true" issuer="[STSProviderURL]" realm="[ClientUrl]" requireHttps="false" />
    <cookieHandler requireSsl="false" name="[UniqueName]" />
</federatedAuthentication>
于 2012-11-08T05:18:16.123 に答える