3

OpenIddict, JWT, 리소스 소유자 부여 및 클레임 기반 역할이있는 ASP.NET 코어를 사용하고 있습니다. 정책을 적용하지 않은 권한 부여는 예상대로 작동합니다.OpenId Connect를 통한 클레임 기반 인증

일부 컨트롤러 및 동작 방법에 대해 인증 정책을 시행하고 싶습니다. 내 모든 사용자가 역할의 주장을, 그래서 나는 시작에 다음과 않았다

services.AddAuthorization(options => 
{ 
    options.AddPolicy("Admin", p => p.RequireClaim("Admin"); 
}); 

그리고 나는 액션 메소드에 다음 않았다 : "관리자"없이

[Authorize("Admin")] 
public async Task<string> Index() 
{ 
    return "Yes"; 
} 

, 내가 접근 할 수 있었다 자원, "Admin"을 추가 한 후에는 그럴 수 없습니다.

생성 된 JWT 토큰에 사용자 클레임이 없으므로이를 가정합니다.

  • 내 JWT에 토큰이 작동하는 사용자 역할 클레임이 있어야합니까?
  • OpenIddict를 사용하여 역할 클레임을 보내려면 어떻게해야합니까?

답변

3

액세스 토큰에 복사 할 역할에 대해 roles 범위를 요청해야합니다 (나중에 변경 될 수 있습니다).

POST /connect/token HTTP/1.1 
Host: server.example.com 
Content-Type: application/x-www-form-urlencoded 

grant_type=password&username=johndoe&password=A3ddj3w&scope=roles 
+0

나는 이것을 수행하여 토큰으로 역할을 반환했습니다. 그렇지만 내 정책이 아닌 주장을 요구하는 정책을 수정해야했지만 지금은 효과가 있습니다. 감사합니다. – Adam