2016-07-13 9 views
2

私は認証のためにAuth0とバックエンドに.netコアアプリケーションを使用しているangular2フロントエンドを持っています。すべては、安全なAPI呼び出しを強制することと一緒に働いています。auth0でユーザを特定する方法jwt

認証されたユーザーをバックエンドで識別する最も良い方法は何ですか。

  • トークンvar bearerToken = Request.Headers["Authorization"].ToString()

  • のソーシャルID:私はこれを行うと考えることができむしろ不器用な方法は、私は、次のいずれかにユーザーIDを接続することを可能にする「setUserToken」API呼び出しを公開することですvar socialId = User.Claims.Where(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier").First().Value

そうすれば、後続のAPI呼び出しで、私はできるだけでfindUserByToken()またはfindUserBySocialProviderOpenId()

私はこの問題をはっきりと解決していないと確信しています。どんな指針も大変ありがとうございます。

答えて

5

JWTのsub項が常にAuth0によって生成され、ログインするために使用されたアイデンティティ・プロバイダとは独立して、ユーザの識別子を含むことになる。

https://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#rfc.section.4.1.2

サブ(被写体)主張は、JWTの主題である主体を特定します。 JWTの主張は通常、主題に関する陳述です。対象値は、発行者の文脈において局所的にユニークであるか、またはグローバルにユニークであるべきであるかのいずれかにスコープされなければならない(MUST)。この請求の処理は、一般的にアプリケーション特有である。サブ値は、StringOrURI値を含む大文字小文字を区別する文字列です。このクレームの使用は任意である。

ほとんどの場合、バックエンドAPIはAuth0アクセストークンのコンシューマである必要があり、認証に関連するエンドポイントを公開する必要はありません。

+0

レスポンスありがとうRodrigo :)私のサブクレームは、実際に、アイデンティティプロバイダに伝えます。上記の例では '' 'socialId == google-oauth2 | [idNumber]' '' ですが、私の主な質問はAPI内のユーザーを特定する方法でした。 –

+0

私はフォローしているかどうかわかりません - あなたのAPIが 'sub'クレームを受け取ったので、あなたが誰であるかを識別できます。あるいは、実装固有の質問をもっとお願いしていましたか? –

+0

これはまさに私が探しているものです:)私の場合、サブクレームはGoogle IDです。特定のユーザーに対してサブクレームをDBに保存するだけですか?私は最近、Java EEのバックグラウンドから来ています。だから、.NETに欠けている賢い選択肢があれば、100%ではありません。 –

関連する問題