10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BEAR.SundayAdvent Calendar 2018

Day 23

BEAR.Sunday 用認証ライブラリ

Posted at

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つのクラスはバリューオブジェクトとしての性質を持たせているため、依存性の注入は意図的にしていません。

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

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?