クライアント/サーバー アプリケーションの場合、主にアプリケーション自体で使用される Web サービスを開発したいと考えています (現時点では、サード パーティによる使用は想定されていません)。
ただし、長期的には、WebService をある種の API として公開することが一般的に望ましいと言えます。したがって、後で簡単に Web サービスを "RESTifing" (ひどい言葉の作成、私は知っています ;-)) できるテクノロジを選択することについて、私はすでにいくつかの考えを入れています。
WCF は、webHttpBinding を提供するだけでなく、LAN および .NET クライアントを利用できるようにする他のバインディングも提供するため、ここにあるようです。
私が今遭遇した問題は、認証に関するものです。WCF が提供するすべての認証手段は、実際のサービスの「外部」で行われるようです。ただし、メソッド(または、ここでポイント 2 の下Login
に示されているように、より「RESTful」なもの)が必要です。
たとえば、次のような Service を書くことを想像します。
[ServiceContract]
public interface IUserService
{
[ServiceMember]
[WebInvoke(Method = "POST", WebUri="/Session")]
public void Login(string username, string password);
[ServiceMember]
[WebInvoke(Method = "POST", WebUri="/Users")]
public void Register(RegisterUserParameter parameter);
}
このサービスを WCF に統合して、サービス プロジェクト内の複数のサブサービスでメソッドが適切に機能するようにするにはどうすればよいですか?
組み込みの WCF 認証を使用する場合、サービスを呼び出す前にユーザー名とパスワードを入力する必要があります。したがって、認証されていないため、 Register
or のいずれかへの呼び出しは失敗します。Login
また、サービス メソッドを使用して現在ログインしているユーザーを WCF に記憶させるにはどうすればよいでしょうか。クライアントの WCF セッション内にセッション Cookie のようなものを保存する可能性はありますか?
それとも、私がしようとしている方法でWCFの下で認証を実現するのは一般的に悪い考えですか?
クライアントアプリケーションでサービスと対話するためのより複雑な方法を犠牲にして、WebAPIを直接選択する必要がありますか?