2017-10-11 7 views
4

私はOAuth 2.0をサポートするさまざまなサービスのスマートな(うまくいけば)統合を提供するサービスに取り組んでいます。など私たちのツールの焦点チームワークフローの改善にあるので、我々はSlackGitHubAsana(課題追跡)を組み合わせている、Cezanne(HRツール)、外部Auth 2.0サービスへの認証を委任する方法

私たちは、これらすべてのツールで作業UIとバックエンドを持っています(ユーザーはすべてのユーザーに権限が与えられているため、アクセスと更新トークンが必要です)。特定のツールで人の役割に応じてUIのさまざまな部分を隠すことができる必要があります。例としてGitHubを取ってみましょう。ユーザーは、リポジトリ所有者、コントリビュータ、企業所有者(ビジネスアカウント用)などであることができます。そのため、ユーザーはそれぞれの権利に基づいて異なるUIを必要とする可能性があります。

私は自分自身で認可を実行することを躊躇していました(別のカスタム認証システムがこの世界で最後に必要なものです)。私は他のサービスの認証メカニズムを利用し、軽量なラッパーを作成したかったのです。それは最初は合理的なアイデアのように思えたが、私はそれを実装する方法を理解することはできませんし、Googleは貴重なアドバイスを提供しません:99.99%私は何か愚かなことをしようとしている、00.01%私はまれな/革新的なもの。

私はOAuth 2.0を利用したいと考えましたが、私たちが必要とするものをサポートしていないようです。最も近いのはスコープですが、シナリオにはあまり関係しません。

今私が持っている唯一のアイデアは、独自の認証システムを作成し、リバースエンジニアリングの種類を使って他のサービスを統合することです。だから私は、APIを使ってユーザーのGitHubアカウントの詳細を要求し、私たちのシステムに彼の役割を適切に適用します:リポジトリAの所有者、リポジトリBの寄稿者、C社の所有者などです。リポジトリ所有者は会社名を変更できません)。また、一般的な管理者/ユーザー/マネージャ/ etcではなく、各サービスのユーザー役割を維持する必要があります。 (リポジトリAの場合)、ManagerOfAsanaTeam(チームBの場合)など

OAuth 2.0サービスに現在のユーザーが使用できる権限を返すエンドポイントがあるとすばらしいことになります。

私はセキュリティエンジニアではないため、明らかなものがありません。上記の実装に投資する前に、あなたに助言を求めることが必要でした。

答えて

6

「認可」という単語は、2つの異なるコンテキストで使用されます。

許可の意味は、「誰がどのアクセス許可を持っているか」です。この承認の解決策は、「ID管理」です。他の文脈では

、認可は「誰に何の権限を付与する人」を意味します。この承認のソリューションは"OAuth"です。

場合によっては、これらの2つの認証を同時に処理する必要があります。詳細については、this questionおよびthis answerを参照してください。

+0

OAuth 2.0を証明していただきありがとうございます。概要の問題の解決策ではありません。質問に記載されている解決策についてのご意見をお聞きしたいと思います(少し変更してより明確になりました)。 – SiberianGuy

2

あなたはidentityserver4であなたの質問にタグを付けました。

This Issue(昨年のidentityserver3)に興味があるかもしれません。 しかし、私は、ほとんどのプロバイダがこのoauth2プロファイル(まだ)をサポートしていないのではないかと心配しています。
UMAは、きめ細かい認証を有効にするためのoauth2のようですが、最適な解決策ではないかもしれません。

関連する問題