Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@ryo88c

BEAR.Sunday 用認証ライブラリ

BEAR.Sunday 上で実装した認証機能をライブラリ化しました。
https://github.com/ryo88c/BEAR.Authority
ライブラリ化することで実装が整理できて良いですね。
アドベントカレンダーということで2018年内に投稿したかったのですが、気がついたら2019年になっていました。あけましておめでとうございます。

認証機能は一般化されているところとそうでないところが比較的混ざりあってしまいやすい機能だと思います。
だからこそライブラリ化によってビジネスロジックをできる限り分離して改修のしやすさを維持しておく価値がより高いのだと思います。

BEAR.Sunday はその設計思想的に言っても、セッション的な認証の仕組みはミスマッチで、OAuth などに代表されるトークンによる認証がよく合います。特に、マルチテナント型のウェブサービスにおいてはセキュリティ上の懸念として運用が雑なアカウントを起点としたインシデントがありますが、JWT で秘密鍵をアカウント別に発行することでそういったリスクへの対策にもなります。
従って、このライブラリでは OAuth 2.0 BearerJSON Web Token (JWT) を使って認証機能を実装しています。

よりビジネスロジックとの混在が予測される承認機能は Authentication クラスに実装し、承認される側、要はウェブサービスでいうところのユーザーを JWT の仕様に合わせて Audience というクラスとして実装しています。Audience は JWT によってトークナイズされる際に Payload というクラスに格納されます。
これら2つのクラスはバリューオブジェクトとしての性質を持たせているため、依存性の注入は意図的にしていません。

ソースコードはできるだけ無駄がないよう書いたつもりなので、よかったら一度目を通してみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?