0

暗黙のフローを介してIDトークンとアクセストークンを取得する反応クライアントを提供するASP.netコアAPIをIdentity Server 4で作成しました。クライアントからAPIへのリクエストを正常に認証できました。ASP.netでユーザープロファイルを取得するIdentity Server 4の暗黙のフロー暗黙のフロー

私の問題は、APIで要求元のユーザーのプロファイル(または少なくともユーザーID)にアクセスする必要があることです。現在、私はベアラトークンに含まれているユーザーのクレームにのみアクセスできます。それは私のAPIを設定するいくつかの方法は、それはミドルウェアのいくつかの並べ替えの権限からユーザープロファイルを取得するように?要求と共にIDトークンを渡す必要がありますか?

お時間をいただきありがとうございます。

答えて

0

最後に、解決策は非常に簡単でした。 IdentityServer4.ServicesIProfileServiceを自分のIDサーバーに実装しました。これにより、アクセストークンに必要なすべての要求を追加できました。

次に、IDサーバーのスタートアップで、プロファイルサービスとしてプロファイルサービスを登録します。

services.AddScoped<IProfileService, MyProfileService>(); 
0

セキュリティ原則の主張で "Sub"を見つけることができるはずです。これはユーザーIDです。その後、ユーザーストアにユーザー情報を問い合わせることができます。

理論上、JWTにはリソースが頻繁に使用するクレーム(userinfo)が含まれている必要があります。そのため、データベースへのラウンドトリップを最小限に抑えることができます。機密情報をJWTの請求に含めることは提案されていません。

また、あなたがIdentityServer4.AccessTokenValidationミドルウェアを使用している場合は、userinfoを照会することができ、使用のイントロスペクションサービスでなければなりませんuserinfoを

"userinfo_endpoint": "https://rmedev1.dca.com.au:8000/identity/server/connect/userinfo", 

を照会することができるかもしれません。

http://docs.identityserver.io/en/release/endpoints/userinfo.html

var userInfoClient = new UserInfoClient(doc.UserInfoEndpoint, token); 

VAR応答= userInfoClient.GetAsync()を待ちます。 var claims = response.Claims;

関連する問題