2016-11-25 23 views
1

私は、ASP.NET Core Web ApiOpenIddictを認証フレームワークとして使用しているサーバーを持っています。今度はSignalRホストを追加し、そのホストに認証を追加したいと考えています。SignalRとOpenId Connect

投稿者different sourcesSignalR(JS Client)は、WebSocketがヘッダーをサポートしていないため、クエリー文字列またはクッキーでアクセストークンを送信したいと考えていました。

認証ミドルウェアは照会エントリの照会文字列またはCookieコンテナをチェックしないので、私はこの値を自分で読み取るプロバイダ/レトリーバー/リゾルバを実装する必要があります。

私はsolution for IdentityServerを見つけましたが、OpenIddictについては何も見つかりませんでした。

ここで、OpenIddictのようなトークンリゾルバを実装するにはどうすればよいですか?

+0

[こちら](https://github.com/mikebridge/IdentityServer4SignalR)は何をしようとしていますか?クエリ文字列とヘッダーの両方を受け入れる[ミドルウェアの2つのレベル](https://github.com/mikebridge/IdentityServer4SignalR/blob/master/src/ChatAPI/Auth/JWTInitialization.cs#L80-L87)があります。 – mikebridge

答えて

2

あなたがJwtBearerAuthenticationを使用する場合は、あなたがトークンを設定するOnMessageReceivedを使用することができます。

Events = new JwtBearerEvents() 
{ 
    OnMessageReceived = async (ctx) => 
    { 
     ctx.Token = ctx.Request.Query["<qs-name>"]; 
    } 
} 

それともIdentityServerAuthenticationを使用している場合、あなたがTokenRetriever(テストしたが、それはこのようなものでなければならない)を使用することができます:

TokenRetriever = (ctx) => 
    { 
     return ctx.Request.Query["<qs-name>"]; 
    } 
関連する問題