Skip to content

Instantly share code, notes, and snippets.

@kawasima
Last active October 16, 2017 08:53
Show Gist options
  • Save kawasima/9a7feaf902930712331a51747c4d28ad to your computer and use it in GitHub Desktop.
Save kawasima/9a7feaf902930712331a51747c4d28ad to your computer and use it in GitHub Desktop.
Bouncrの仕様

Bouncrとは

Bouncrは認証・認可の機能を備えたリバースプロキシです。

Architecture

機能

リバースプロキシ

HTTPとHTTPSをサポートします。HTTPSはTLS 1.2のみのサポートです。

Bouncrの管理ページで、転送するバックエンドのアプリケーションと、その中を区分けしたレルムとを登録できます。 この設定にしたがって、Bouncrが受けたリクエストを、バックエンドのアプリケーションに転送します。

認証

認証は以下のタイプをサポートしています。

  • パスワード認証
  • 2要素認証
  • 外部のLDAP
  • 外部のOAuth2プロバイダ
  • SSLクライアント認証

認可

Bouncrでは、任意のグループを作成することができます。 このグループに対して、ロールを割り当てることができます。

監査

ユーザレベル

Bouncrへのサインイン直後のダッシュボードで、直近のアクティビティと現在Bouncrでサインイン中のセッションの一覧が表示されます。 そこで不審なセッションはその場で削除することができます。

監査者レベル

監査権限をもったユーザは、不正なアクセスがないかを監査できます。

システム管理者とただの管理者

Bouncr自体の権限は、"CREATE_USER" "CREATE_ANY_USER" のように、たいていANYの付くものとそうでないものがあります。 ANYはどんなユーザでも変更でき、

以降、便宜的にANY権限をもつユーザをシステム管理者、そうでない管理権限を単に管理者と呼びます。

ユーザ管理

管理者によるユーザの登録/変更/削除/ロックができます。

パスワードのポリシー

以下の項目を決めることができます。

  • 許容するパスワードの文字列・文字長
  • アカウントロックするまでの連続失敗回数
  • パスワードの有効期限

グループ管理

管理者によるグループの登録/変更/削除ができます。 グループにユーザを追加できます。

招待コードの発行

システム管理者以外は、自分の所属するグループに属しているユーザしか見えないため、それ以外のユーザをグループに加えることはできません。 そこで招待コードを発行し、それを追加したいユーザに送り、その人がジョインのアクションをとることによって、グループに加わることができます。

アプリケーションとレルムの管理

管理者によるアプリケーションの登録/変更/削除ができます。

ロールと権限の管理

管理者によるロール・権限の登録/変更/削除ができます。

OpenID Connect プロバイダ (IdP)

Bouncrで管理しているアカウントを使って、別のシステムで認証できるよう、BouncrがIdPとして動作することも可能です。

バックエンドアプリケーションのつくりかた

Bouncrで認証・認可後、バックエンドのアプリケーションへは、以下のようなHTTPヘッダが付いたリクエストが転送されます。

X-Bouncr-Id: kawasima
X-Bouncr-Permissions: READ_COMMENTS,WRITE_COMMENTS

したがって、ここから認証済みのIDと持っている権限をもとに、認可をおこなうだけです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment