4

ACS経由でUserName認証を使用するWCFサービスがあります。これは、サービスIDを使用している場合はうまく機能しますが、Windows Live ID資格情報を使用しようとすると、次のエラーが発生します。

System.ServiceModel.FaultException:ACS10002:SOAP本体の処理中にエラーが発生しました。ACS50012:認証に失敗しました。ACS50026:「louis@arsunica.com」という名前のプリンシパルは既知のプリンシパルではありません。

残念ながら、WCFサービスでWindowsLiveIDを使用する方法の例はまだ見つかりません。私が見つけた唯一の例は、複数のIDプロバイダーをASP.NETまたはMVCWebサイトと統合することに焦点を当てているようです。

この点での助けをいただければ幸いです。

4

1 に答える 1

3

ACS は、Live ID のユーザー名とパスワードを直接認証しません。ACS は Live ID のフェデレーション プロバイダーとして機能し、仲介者であるため、Windows Live ID によって発行されたトークンのみを消費します。ACS は、パッシブ (ブラウザー リダイレクト) ベースのシナリオでそのまま使用できる Live ID 認証をサポートしていますが、WCF サービスの場合は、代わりに Live Connect API の使用を検討してください。

サービスで LiveID を使用するには、まずクライアントが LiveID に対して自身を認証し、次に LiveID が発行したトークンを WCF サービスに提示します。ただし、これをすべてセットアップするには、ジャンプする必要があるいくつかのフープがあります。

Live Connect API を使用するには、WCF サービスをアプリケーションとして Live ID に登録します。WCF サービスを使用するクライアントは、Web ベースのログイン ページと、Live ID が要求するユーザー同意ページを処理できる必要があります。以下のドキュメントは良いスタートです

http://msdn.microsoft.com/en-us/library/hh243641.aspx

http://msdn.microsoft.com/en-us/library/hh243647.aspx

http://msdn.microsoft.com/en-us/library/windows/apps/hh465098.aspx

次の問題は、Live Connect から取得するトークンが JWT (JSON Web Token) 形式になることです。ライブ接続から別のトークン形式を要求できるかどうかはわかりませんが、WCF サービス認証が WIF ベースの場合、SAML トークンが必要になる可能性が高くなります。JWT は、WIF がまだサポートしていないかなり新しいトークン形式であるため、JWT トークンを理解するサービスで WIF SecurityTokenHandler を構成する必要があります。上記の 3 番目のリンクには、JWT を読み取るためのコードが含まれています。

于 2012-01-23T22:21:07.380 に答える