0

Auth0 でアカウントを作成し、バックエンド API への Angular 2 の簡単なログインを取得しようとしています。

1. 私がやろうとしているのは、API のロールにアクセスして、ユーザーが正しい権限を持っているかどうかを確認できるようにすることです。

入った Auth0 Authorization 拡張機能を有効にして、1 つのグループと 1 つのロールを作成しました。作成したテスト ユーザーにこれらを割り当てました。次に、構成に移動し、トークンの内容と永続化のルールを公開しました。

nodejsアプリでJWTからアクセス許可/グループを表示するにはどうすればよいですか? 私はexpress-jwtこれを使用しています:

const authenticate = jwt({
  secret: config.get('AUTH0_CLIENT_SECRET'),
  audience: config.get('AUTH0_CLIENT_ID'),
  credentialsRequired: false,
});

iss、sub、audなどの詳細が表示されます。しかし、ユーザー メタデータに関する詳細はありません。どうすればこれを取得できますか? また、以前にAuth0を使用したことがないことは明らかであるため、ユーザーの詳細を独自のデータベースに保存して、独自のIDを使用してユーザーアクションに対して保存できるようにすることをお勧めしますか、またはAuth0がIDを提供する場合はIDを使用できますか?データベースにユーザーのアクションを保存します。

編集1

スコープを渡すことができる Lock のオプション パラメータがあることがわかりました。ログイン時にこれらを要求するのは悪い習慣ですか? 今のところ、ほんの一握りのグループ/ロールしかありません。または、提供されたトークンを使用して API がユーザーをルックアップし、app_metadata を取得してパーミッションなどを表示できるようにした方がよい場合は、どうすればこれをルックアップできますか?


2. ユーザーを管理して表示し、自分の管理パネルに表示して権限を管理するにはどうすればよいですか。

4

1 に答える 1

0

グループとロールの情報がトークン自体 (groupsおよびrolesクレームとして)内で利用可能であり、使用している場合はexpress-jwt、次のようにアクセスすることでサーバー側でこの情報にアクセスできます。

req.user.groups
req.user.roles

本質的にexpress-jwtは、トークンに含まれるクレームをreq.userオブジェクトで使用できるようにします。

ユーザーを識別するために使用する ID に関してsubは、ユーザー トークンのクレームに含まれる値を使用できます。subこの値は一意で安定していることが保証されているため、まったく同じ方法で認証を使用する繰り返しユーザーは、クレーム内で常に同じ値を持ちます。

scopeグループとロールの情報を含める 1 つの方法は、パラメーターを使用して要求することです。この情報をトークンに含めるように要求することは悪い習慣ではありませんが、SPA によって使用される暗黙的な許可を通じて配信されるトークンがコールバック URL の一部として含まれていることを考慮する必要があります。サイズは、URL に課せられた制限によって制限されます。


2 番目の質問に関しては、Auth0 Authorization 拡張 API と Auth0 Management API の両方を統合することで、独自の管理バックエンドを実装できます。詳細については、次のリンクを参照してください。

于 2017-01-11T10:37:39.920 に答える