今のところ、単純なトークンによって特定のアプリケーションへのアクセスを制限するためだけに、単純な認証をDataServicesに追加したいと思います。
ドメイン認証やフォーム認証は必要ありません。
私はここで認証についてたくさん読みました:
http://franssenden.wordpress.com/2010/06/14/custom-security-odata-service-wcf-data-services/
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/06/03/10482.aspx
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/01/15/10119.aspx
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/01/10/10100.aspx
残念ながら、それはすべて大量の作業を必要とします。とりわけ、カスタムIHttpModuleを作成します。もっと簡単な解決策があるはずです。
クライアント(WPF)でオブジェクトコンテキストを作成すると、資格情報を追加できることを知っています。
Uri uri = new Uri("http://localhost/myapp/odata.svc");
MyEntities ent= new MyEntities (uri);
ent.Credentials = new NetworkCredential("token", "zx5as9vxc5sa9h0vb6523cv56");
しかし、どこでそれらを読むことができますか(カスタムIHttpModuleの実装なしで)?
たとえば、データサービスの実装であるクラスで何かを使用できると思いました。
protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
string cred = args.OperationContext.AbsoluteRequestUri.UserInfo;
}
私はUserInfoに精通していませんが、その説明は「ユーザー名、パスワード、...を取得します」です。
だから私は2つの主な質問があります:
ent.Credentials = new NetworkCredential( "token"、 "zx5as9vxc5sa9h0vb6523cv56");と入力すると、含まれている資格情報をどこで読み取ることができますか。
クライアントアプリでUserInfoを設定し、OnStartProcessingRequestメソッドで使用できる場所(可能な場合)。
よろしく、ダニエルSkowroński