1

에서 권한 부여 역할 나는 현재 여기에서 찾을 수 있습니다 내 Angular2 AspNetCore WebApi 샘플 응용 프로그램에 역할을 추가하려고 오전 : https://github.com/tonywr71/SnazzleAngular2 OpenIddict 및 AspNetCore WebApi

은 불행히도, 난 조금 붙어있어. 성공적으로 ASOS 인증을 구현했습니다. 토큰이 연결/토큰 메서드에서 반환되고 헤더의 무기명 토큰을 사용하여 내 사용자 지정 메서드를 호출 할 수 있으며 성공적으로 승인됩니다.

이제는 두 가지 문제가 있습니다. 하나는 User.Identity 개체의 Name 필드가 설정되어 있지 않은데도 권한을 부여한 것입니다. 클레임에 사용자 이름을 추가하여이 문제를 해결했습니다. 둘째, 권한 부여 특성에서 역할을 사용할 수 있도록 역할을 채워야합니다. Startup.cs 파일에서 Asp.Net Core Identity를 활성화하고 데이터베이스를 구성했습니다. 그래서 나는 정말로 webapi 메소드에 Authorize 속성을 넣고 그 속성에 허용 된 역할을 설정할 수 있기를 원합니다.

이름 및 역할을 채우는 방법을 알려주세요.

답변

2

이름 및 역할을 채우는 방법을 알려주세요.

사용자 이름을 얻으려면 표준 profile 범위를 요청해야합니다. 역할에 대해서는 roles을 추가하십시오.

예컨대 : 작동하는 것 같다

grant_type=password&username=johndoe&password=A3ddj3w&scope=openid%20profile%20roles 
+0

감사합니다. 클라이언트로부터 제출 된 역할에 대해 권한을 부여함으로써 일종의 보안 원칙을 위반하는 것으로 보입니다. 이것이 내가 처음에 간과 한 이유입니다. 그런 식으로해야만하는 이유가 있습니까? – tone

+0

역할이 클라이언트에 의해 "제출"되지 않습니다. "역할"범위는 OpenIddict가 액세스 토큰과 ID 토큰 모두에서이를 리턴 (공개) 할 수있게하는 것입니다. ID 토큰은 클라이언트 응용 프로그램에서 읽을 수 있으므로 (액세스 토큰이 JWT 인 경우 액세스 토큰도 마찬가지이므로) 데이터 노출 위험이 있으므로 개발자가이 사실을 알 수 있도록 추가 범위가 사용됩니다. – Pinpoint

+0

나는 아직도 여기 조금 혼란 스럽다. "roles"범위를 추가하지 않으면 Authorize 특성의 Roles 속성이 인식되지 않고 아무 것도 성공적으로 승인되지 않습니다. 서버에서 역할을 인증 받으려면 클라이언트에서 "역할"범위를 제출해야합니다. 그리고 클라이언트 요청에 "역할"범위를 지정하면 역할 목록도 클라이언트에 전송됩니다. 이 경우인가요? – tone