0
OpenIddict를 사용하여 ASP.NET Core 2.0 응용 프로그램에서 JWT 인증을 사용하고 있습니다.JWT를 사용하여 SignalR Core Hub 메서드를 인증하는 방법
나는 this thread에있는 아이디어를 따르고 SignalR 핸드 셰이크 후에 AuthorizeWithJWT
메서드를 호출합니다. 하지만 지금은 AuthorizeWithJWT
메서드에서 무엇을 설정해야할지 모르겠으므로 예를 들어 [Authorize(Roles="Admin")]
을 사용할 수 있습니다.
public class BaseHub : Hub
{
public async Task AuthorizeWithJWT(string AccessToken)
{
//get user claims from AccesToken
this.Context.User = user; //error User is read only
}
}
그리고 속성을 부여하여 :
public class VarDesignImportHub : BaseHub
{
[Authorize(Roles = "Admin")]
public async Task Import(string ConnectionString)
{
}
}
예, 이것은 유효한 사례이지만 github 스레드 ([link1] (https://github.com/aspnet/SignalR/issues/888#issuecomment-330727192), [link2] (https : /github.com/aspnet/SignalR/issues/888#issuecomment-330721385))이 접근 방식에는 몇 가지 보안 위험이 있습니다. 쿼리의 access_token은 public이므로 (당신은 그것을 기록 할 수 있습니다 ...). 다른 방법이 가능하지 않으면 그렇게 할 것입니다. – Makla
그러나 한 번 액세스 토큰이 가능합니까? @Pinpoint 어떻게 생각하세요? – Makla
유일한 위험은 액세스 토큰이 로그에 포함된다는 것입니다 (OAuth2 베어러 사양에서 명확하게 설명 됨). 이를 방지하기 위해 필터링 API를 사용하여 쿼리 문자열을 비롯한 로깅 추적을 사용하지 않도록 설정할 수 있습니다. – Pinpoint