Help us understand the problem. What is going on with this article?

BEAR.Sunday 用認証ライブラリ

More than 1 year has passed since last update.

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした