2016-06-01 4 views
1

リダイレクトURLが必要な第三者サービスのために、デスクトップアプリケーションを扱う人のために、どのように処理するのですか?oauth2oauth2はデスクトップアプリケーションのURLをどのようにリダイレクトしますか?

私はDiscordのoauth2ログインによってユーザーを認証したいと考えています。しかし、私はそれの後ろにwebserviceなしで、デスクトップアプリケーションに取り組んでいます。私はのように見えるリダイレクトスキームについて読んだ

urn:ietf:wg:oauth:2.0:oob

しかし、不和は、それがのOAuth2経由でログインした後、非マッチングリダイレクトURLだと言います。

+0

oauth2ログイン用のサーバー側アプリケーションを開発する必要があると思います。実際、Oauth2は、アクセスするために指定されたURLを使用するインターネットベースのアプリケーション用に作られました。デスクトップアプリケーションはそのようには動作しませんので、Oauth2を統合することはできません。 – Linh

答えて

2

あなたはデスクトップアプリケーションを使用する場合は、選択肢のカップルを持っている:

  1. あなたは、ローカルWebサーバを起動してredirectUriとしてlocalhost使用することができます。欠点は、通常、許可されたリダイレクトUrisのリストにポート番号を指定する必要があり、特定のポートがクライアント上で利用可能かどうかを必ずしも知る必要がないことです。
  2. urn:ietf:wg:oauth:2.0:oobは、サーバーにユーザーをリダイレクトしないように指示しますが、ブラウザーウィンドウのタイトルにコードを出力します。他のウィンドウのタイトルを読み取るための適切な権限を持っている場合は、そこの変更を自動検出することができます。また、コードは通常ユーザーに表示されるので、フォールバックとして&をアプリケーションにコピーしてコピーすることができます。しかし、あなたのサービスはこれをサポートしていないかもしれません。
  3. トークンを転送するWebサービスを設定します。基本的には、アプリケーションが認証されるWebサービスを設定し、そのWebサービスは、ユーザに送信する適切なstateを含む認証サービスへのURLを返します。その後、認証サービスはあなたのウェブサービスにあなたのユーザを送り返し、あなたのウェブサービスにコードを再び報告します。長いポーリング、Webソケット、またはプロセス全体で開いたままになっている実際のTCP接続を使用します。 Webサービスは、サードパーティによって悪用されないように慎重に設計する必要があることに注意してください。 Webサービスに対してデスクトップアプリケーションを技術的に認証することはできないため、他のアプリケーションがWebサービスを呼び出すのを止めることはできませんが、ユーザーが承諾画面でその情報を提示することができます。
+0

iOS/OS Xアプリケーション(myapp:// oauth/callbackなど)にリダイレクトしたい場合は、このURIにリダイレクトするためのプロキシとしてWebサービスが必要ですか? –

関連する問題