Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[server] Implement authorizer interface. #76

Open
mizosukedev opened this issue Jul 6, 2022 · 4 comments
Open

[server] Implement authorizer interface. #76

mizosukedev opened this issue Jul 6, 2022 · 4 comments
Assignees

Comments

@mizosukedev
Copy link
Owner

  • 現在認証機能が無い。認証機能を追加するインターフェースはある。
  • 何らかの認証機能を提供する。できればオープンな仕様が良い。
@mizosukedev mizosukedev self-assigned this Jul 6, 2022
@mizosukedev
Copy link
Owner Author

  • 自分用のサーバーをクラウドにデプロイした時に認証機能は必要。
  • だが、認証機能を自分で作りたくない。
  • 後から容易に交換できるようにしたい。

というのが目的。

@mizosukedev
Copy link
Owner Author

外部認証する仕組みとしてはoauth2/openid connectが代表的か。
oauth2 だとresource owner password credentials grantなら簡単に実装できるし使いやすいと思ったが、セキュリティ的な問題がありoauth2.1で削除されるとのこと。
なぜ問題かというのは現状の理解では下記の通り。

  • 認証まで取り決めてしまっていて、ユーザー/パスワード認証しか無い。
  • ユーザー/パスワードをアプリが読み取れてしまう。
  • 本来oauthは認可のとこしか決めてないはずなんだがレガシーアプリ向けに残されたものである。

Authorization code grant使え!というのが解なのだが、この方式だとブラウザが必須になるのでcurlだけでやるのがちょっと厳しいかもしれない。

@mizosukedev
Copy link
Owner Author

mizosukedev commented Jul 27, 2022

Cognitoでユーザープールを作成後に、AuthorizerインターフェースをAuthorization code grantで実装してみた。
トークン取得までは簡単にいけた。
現状理解出来ていないのは、

  • 認可サーバーから取得した認可コードとトークンはどこで保存するもの?tunneld?それともクライアント(=ブラウザ)に返しちゃう?
    • もしtunneld内で管理するんだったらクライアントとの間にはセッションを作らないといけないよね?
    • クライアントに返すとしたら、WebAPI呼ぶ度にTokenとRefresh Tokenをtunneldに送ることになるのかな?
  • トークンの有効性を検証する為のイントロスペクションエンドポイントがCognitoに見つからない。そもそも無いのか、使い方や理解が間違っているのか?

@mizosukedev
Copy link
Owner Author

golangでオープンなoauth2実装

別にgoじゃなくてもいいんだけどね。
自分でクラウドに環境作る時はきっとCognitoにするのではなかろうか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant