あなたはWindows Communication Foundation Authentication Serviceを探しているようですね。
EDIT:私は上記の提案を撤回したいのですが、より慎重に質問を再読み込み(とアリエルのコメントの後)後
。このシナリオでは、WCF認証サービスはほとんど追加されません。
私はこれをWCFとASP.NETの間で行っていませんが、フォーム認証されたユーザーを共有するようにASP.NETアプリケーションを構成しました。
両方のアプリケーションが同じ方法でフォーム認証Cookieを暗号化/復号化できるようにするには、両方のアプリケーション(マシンまたはアプリケーションレベルでこれを実行するかどうかによって、両方のアプリケーションに対してconfigure the <machineKey>
element) )。 validation
,validationKey
、decryption
、およびdecryptionKey
属性を見てください。
両方のweb.configファイルの<forms>
要素が同様に設定されていることを確認してください。具体的にはname
,path
およびdomain
の属性。
これはWebブラウザのみへ/から渡されたクッキーに適用されます(ただし、この場合に有用であるかもしれない)という可能性があります:クッキーは、ウェブサイトの間で渡すことができるようにするにはwww.foo.comとbar.foo .COMクッキーは、他の1つのサイトに設定し、正常に渡すことができるようにするために、次のようにあなたがforms
要素を構成します:
<forms ... domain=".foo.com" ... />
WCFサービスにクッキーを渡すには、トリッキーなビットである可能性が高いです。私は、WCFと非常に経験ないんだけど、そうI've adapted code from kennyw.com:
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers.Add(HttpRequestHeader.Cookie, "<Forms Authentication Cookie>");
using (OperationContextScope scope = new OperationContextScope(serviceClient.InnerChannel))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
serviceClient.MethodName();
}
あなたはIIS内のWCF(とないセルフホスティング)をホストしている場合は、
を設定することにより、ASP.NET処理パイプラインを通じてWCF要求を渡すことができます
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" ... />
</system.serviceModel>
あなたがOperationContext.Current.IncomingMessageProperties
で、着信メッセージのプロパティを使用してリクエストヘッダを調べ、フォーム認証Cookieの値を取得し、FormsAuthentication.Decrypt(string)
を使用して、それを解読できホスティング自己をしている場合。
私はこれがうまくいくかどうかは分かりませんが、もしそうであれば聞きたいです!
こんにちはアリエル、どうやってこれに乗りましたか?私は似たような問題を持つ人を知っ –