2014-10-23 4 views
3

우리는 내장 OWIN oAuth 서버 기능을 사용하여 무기명 토큰을 생성합니다. 우리는 그들에게 ASP.NET Web API를 사용하게했지만 SignalR (그리고 AngularJS javscript 클라이언트)을 사용하는 방법을 알지 못했습니다. 인증 및 승인을 위해 SignalR과 함께 베어러 토큰을 사용하려면 어떻게해야합니까? 나는 이것을 달성하는 방법에 대해 정말로 좋은 대답을 보지 못했다.OWIN oAuth Bearer 토큰 기반의 인증 및 권한 부여는 SignalR에서 어떻게 수행합니까?

미리 감사드립니다.

답변

3

아쉽게도 JS WebSocket API는 맞춤 헤더를 설정할 수 없습니다.

그러나 WebSocket 요청을 포함하는 query string of all SignalR requests에 무기명 토큰을 추가 할 수 있어야합니다.

$.connection.hub.qs = { 'access_token' : accessToken }; 

이렇게하면 custom OAuthBearerAuthenticationProvider to pull the token from the querystring을 만들 수 있습니다.

+0

맞춤 qs 공급자를 사용했습니다. 그러나 일단 웹 소켓 연결이 허가되면 만료되지 않았습니다. 긴 폴링을 사용하는 대신 WebAPI와 동일한 헤더로 작업하고 동일한 방식으로 만료됩니다. – Stonetip

+2

@ halter73이 작동하지만 보안 문제가 있습니다. 쿼리 문자열을 읽는 침입자가 access_token을 알고 있습니다. 합법적 인 사용자를 대신하여 요청을 위조 할 수 없습니까? – pomarc

+2

@pomarc 수정하십시오. 다행히도 HTTPS를 사용하면 쿼리 문자열은 헤더처럼 암호화됩니다. 아직도, 당신은 좋은 지적을 제기합니다. 대부분의 헤더가없는 동안 쿼리 문자열이 서버에 의해 기록되는 경우가 있습니다. 이는 쿼리 문자열에 자격 증명을 넣지 않도록하는 한 가지 이유 일 수 있습니다. – halter73

관련 문제