OpenIDは厄介な選択です。ユーザーが既にアカウントに関連付けられたデータを持っているように思えます。つまり、このデータを設定するために、ある時点でユーザーがサーバーにログインしてから、このデータにアクセスするために同じ資格情報でアプリケーションにログインする必要があります。問題は、クライアントアプリケーションが問題のユーザーを実際に認証したことを確実に確認することです。クライアントアプリケーションが(何らかの形で)ユーザーのOpenIDを持っていると仮定すると、サーバーは暗黙的にクライアントアプリケーションがそれを伝えることができないため、十分ではありません。
私の頭の上から外して、私は、OpenIDでできることは次の通りだと思います。
まず、サーバーでOpenID認証を設定します。次に、クライアントアプリケーションの認証が必要な場合は、WebBrowserコントロールを使用してサーバーURLを指定し、ユーザーがOpenIDプロバイダーで認証できるようにし、ブラウザーが認証情報を持つサーバーに戻るように指示する必要があります。この時点で、クライアントアプリケーションはユーザの認証ステータスを認識しませんが、サーバは自分が誰であるかを認識します。これで、サーバーは、クライアントが使用するための単一使用の認証キーを生成できます。そのキーを含む特別なURLにリダイレクトすることができます。クライアントはそのURLを検出し、キーを抽出し、Webブラウザーコントロールを非表示にし、そのキーを使用してサーバーと通信します。私はそれがそのような認証を行う安全な方法だと信じていますが、私が言ったように、これは私の頭の上からちょうど離れています。
で(OAuthの使用)Twitterアプリでこれを行うの一例は、実は、私はちょうどそれを行うライブラリを書いてあります。https://github.com/arktronic/sevenauth – Arktronic