2012-02-17 17 views
3

編集:私はMVC3WCF Data Servicesの認証

とは対照的に、WCF Data Servicesのために行くことにしました今、私はWCF Data Servicesのために行くことに決めたことを - 私は、ユーザーを認証し、認可する方法が必要です。

SQLMembership DBの設定を検討しましたが、実際にユーザーを認証するのは難しいです。私のクライアントは.NETアプリケーションではありません。ほとんどの場合、データを取得するためにRESTFul WCFデータサービスを呼び出すiPhone/Androidアプリになるでしょう...

答えて

2

MSDNに記載されているように

WCF Data Servicesのは、認証のさまざまなオプションを可能認証:WCF Data Servicesのセキュリティ保護。使用可能な方法から、Windows認証は、NTLMまたはKerberosメカニズムのいずれかを使用して、最も安全です。プラットフォーム間での可用性の制約から、現在使用されているほとんどのプラットフォーム、Android(バージョン4.0「アイスクリームサンドウィッチ」)、iOSなど、NTLMを使用できる最も適切で安全な認証方法があります。 Linux、UNIX、Windows。

IIS上でホストされているODataサービスのWindows認証を設定すると、匿名アクセスが無効になり、Windows統合認証が有効になります。詳細なガイドはOdata and Windows Authenticationにあります。

サービスにアクセスできるユーザをより詳細に制御するために、設定ファイル(web.configなど)から直接、特定のユーザだけでなくユーザロール/グループの両方にアクセスを許可または拒否することができます。 。特定のユーザーのアクセスを許可するための構文は、次のとおりです。セキュリティを最大限に高めるには、すべてのユーザー/グループへのアクセスを拒否し、必要に応じて明示的にアクセスを許可することをお勧めします。認証タグが明示的に設定ファイルで定義されていない場合は、許可タグの間でのルールは、(すなわち許可ユーザーDOMAIN \ユーザーアクセスは、すべてのユーザーに対して拒否よりも優先されます)

<authorization> 
     <allow users="DOMAIN\user"/> 
     <-- Deny access to every other authenticated or anonymous user 
     <deny users="*" /> 
     <deny users="?" /> 
    </authorization> 

ために、その後、IISを取っています認識されたすべての接続ユーザー(Active Directoryまたはローカルマシン)のアクセスを認証して許可します。

クロスドメイン環境では可能ですが、どちらかが必要ですでWindows認証の設定:

  • ドメイン間で確立される信頼関係(IISは、外部ユーザーを認証できるように)、または
  • 両方のドメインに同じユーザ名とパスワードの組み合わせが存在する または
  • 外部ドメインのクライアントは、サーバドメインに対して有効な資格情報 で認証されます。

このような状況で利用できるオプションについては、thisブログ記事で詳しく説明しています。データベースにログインして、WCFデータサービスに送信されたWindowsのアカウントの資格情報を使用して所望のデータを取得することができるようにするために

偽装

は、サービスはユーザーを偽装する必要があります。

identity impersonate="true" 
:これは、以下の設定を行う必要があります
、設定ファイル(つまり、web.configファイル)でいずれかのコードで、または構成

  • で行うことができます
    • 接続するユーザーの資格情報 でサービス全体を実行したくない場合は、imper sonationが プログラム、必要な場所に設定することができ、次のように:

      lUser = TryCast(HttpContext.Current.User.Identity、WindowsIdentity)

      lUserContext = WindowsIdentity.Impersonate(lUser.Token)

+0

返事をありがとう - IOSから認証しようとしたとき、私は、ユーザーがSQLMembershipデータベースにポストのため – Steve

+0

感謝を使用して格納されるように、Windows認証を探していないよ、それは同じですか?私はipadとiphoneからWCFサービスを呼び出すフレームワークに取り組んでいます –

+0

はい、NTLMはiOSでもサポートされています。 –

2

私はMVC 3でServiceStack.netを使用することをお勧めします。 MVC 3で非常によく動作するWebサービスフレームワークには、すべてを設定するNuGetパッケージが含まれており、JSONでネイティブに動作します。これに関する最も良い点は、(WCFとは対照的に)構成がなく、シンプルで強力なコードファーストアプローチです。それはまた非常に速いです。ダウンロードにはservicestack.net、ダウンロードを開始するにはtutorialを参照してください。チュートリアルから、リポジトリのTridionコードを独自のDBコードに置き換えて、データを保存することができます。