2009-05-09 9 views
8

私がOpenIDで行った読書の大半から、ブラウザが必要なようです。私はWCFアプリを書いており、認証方法としてOpenIDを使いたいと思っていましたが、私のアプリはウェブアプリではありません。 Webブラウザを必要とせずにWCFとOpenIDを一緒に使用できますか?WCFでブラウザを使用しないOpenIDを使用することは可能ですか?

+0

この非常に遅いコメントは申し訳ありません。しかし、「ブラウザなし」とは、独自のログインウィンドウを表示して、ユーザーがGoogleのユーザー名とパスワードなどを入力できるようにすることですか?私がユーザーだった場合、私は決してそのようなユーザー/パスワードを提供しません。 –

答えて

10

のOpenIDはクッキーからそのスペック独立に宣伝することができますが、そのようなスペック理由現実には、Webサイトにログインする以外にも、OpenIDの優れたソリューションを見たことはありませんでした。これは実際には主な使用事例です。

ただし、まだWCFとOpenIDを使用するには良い方法があります。 OAuthをミックスに追加します。 DotNetOpenAuthライブラリには、WCFクライアントがOAuth経由でWCFサービスの呼び出しを許可される方法を示すサンプルがあります。サービス側では、ユーザーがOpenIDを使用して認証プロセスの一部としてログインします。

あなたは、WCFのであれば基本的にアプリは1回限りのセットアップの一部として、WCFサービスを呼び出すために「ログイン」する必要があります。

  1. アプリは、ユーザーが見ているブラウザをポップアップ表示
  2. ユーザはOpenIDでログインします(ユーザは既にログインしている可能性がありますが、この手順をスキップすることができます)
  3. OAuth SPはユーザに「doあなたはこの[wcf app]にこのサイトにアクセスする権限を与えたいのですか? "
  4. ユーザーは「はい」と言い、ブラウザを閉じます。
  5. WCFアプリケーションは、OAuthプロトコルのおかげでWCFサービスにアクセスできるようになりました。

これは、ユーザーがWebブラウザを介してサービスに「はい」と答えたときに、WCFアプリケーションに特別な機密情報が割り当てられます。同様の方法でユーザー名/パスワードを設定します。

DotNetOpenAuthライブラリを確認してください。サンプルと、これを得るために必要なものがあります。

+0

この投稿は非常に洞察力がありました、ありがとう!私はDotNetOpenAuthを見ていきます。 –

1

OpenID Authentication 2.0 Specificationを読んでから、私は答えに到着しているように見える:プロトコルでは何もJavaScriptや最近のブラウザを必要としませんが

、認証方式は、「AJAX」スタイルのセットアップとうまく果たしています。これは、エンドユーザーが自分の現在のWebページを残すことなく、依拠当事者に自分のアイデンティティを証明できることを意味します。

OpenID認証は標準HTTP(S)要求と応答のみを使用するため、はUser-Agentや他のクライアントソフトウェアの特別な機能を必要としません。 OpenIDは、Cookieの使用や、Relying PartyやOpenID Providerのセッション管理の他の特定のメカニズムには依存しません。ユーザエージェントへの拡張はエンドユーザの対話を簡素化することができるが、プロトコルを利用する必要はない。

今、私はちょうどそれがWCFベースの依拠当事者で動作するように取得するための巧妙な方法を把握する必要があり...

1

OpenIdMembershipProvider(おそらく他のものが存在する)をとります。 Then configure Message security in WCF, with Username authentication, then you can use the ASPNET MembershipProvider to authenticate your user. もっと簡単な解決策が見つかるとは思いません;)

+0

これは本当に簡単ですね。ブラウザの操作は不要ですか? –

+0

ブラウザの操作は必要ありませんが、このプロバイダの使い方はわかりませんが、ASP.NETで互換性モードを有効にするためのいくつかの嫌悪感があるかもしれません。 参照:http://msdn.microsoft.com/en-us/library/aa702682.aspx 存在するいくつかのOpenIDMembershipProviderがありますが、私はそれらをテストしませんでした。期待どおりに動作していると仮定すると、openIdMembershipProviderを「プラグイン」し、WCFを使用してリクエストを認証するだけでよいのです。 –

関連する問題