0

암시 적 플로우를 통해 ID 토큰 및 액세스 토큰을 얻는 반응 클라이언트를 제공하는 Identity Server 4로 보안되는 ASP.net 코어 API를 만들었습니다 . 클라이언트에서 API에 대한 요청을 성공적으로 인증 할 수 있습니다.ASP.net에서 사용자 프로필 가져 오기 Identity Server 4의 핵심 API 암시 적 플로

내 문제는 API에서 요청한 사용자의 프로필 (또는 적어도 사용자 ID)에 액세스해야한다는 것입니다. 현재는 무기명 토큰에 포함 된 사용자의 소유권 주장 만 볼 수 있습니다. 그것은 거기에 어떤 종류의 미들웨어와 함께 기관에서 사용자 프로필을 검색 할 수 있도록 내 API를 설정하는 몇 가지 방법은? 요청과 함께 ID 토큰을 전달해야합니까?

감사합니다.

답변

0

결국 솔루션은 매우 간단합니다. 내 ID 서버에 IdentityServer4.ServicesIProfileService을 구현하여 액세스 토큰에 필요한 모든 클레임을 추가 할 수있었습니다.

그러면 신원 확인 서버를 시작할 때 프로필 서비스로 내 프로필 서비스를 등록합니다.

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

보안 원칙 클레임에서 "Sub"를 찾을 수 있어야합니다. 어떤 userId입니다. 그런 다음 사용자 저장소에 대해 사용자 정보를 쿼리 할 수 ​​있습니다.

이론 상으로는 JWT에는 리소스에 자주 사용되는 클레임 ​​(userinfo)이 포함되어야하므로 데이터베이스로의 왕복 횟수를 최소화 할 수 있습니다. JWT 청구서에 민감한 정보를 포함시키지 않는 것이 좋습니다.

또한 당신은 당신이 IdentityServer4.AccessTokenValidation 미들웨어를 사용하는 경우 사용자 정보를 조회 할 수 사용 성찰 서비스해야 사용자 정보

"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;