私は、JWT認証とウェブソケットを使用している小さな.netコアアプリケーションに取り組んでいます。websocketリクエスト中にJWTを検証する方法。 .net core
私は、標準のWeb APIコントローラのトークンの生成と検証を成功裏に実装しました。しかし、WebSocket
リクエストのトークンを検証して、もちろん[Authorize]
属性では動作しないようにしたいと考えています。
は、私は私のミドルウェア・パイプラインのように設定している:
app.UseWebSockets();
app.Use(async (http, next) => {
if (http.WebSockets.IsWebSocketRequest == false) {
await next();
return;
}
/// Handle websocket request here. How to check if token is valid?
});
// secretKey contains a secret passphrase only your server knows
var secretKey = .....;
var signKey = new SigningCredentials (
new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey)),
SecurityAlgorithms.HmacSha256
);
var tokenValidationParameters = new TokenValidationParameters {
ValidateIssuer = false,
ValidateAudience = false,
// The signing key must match!
ValidateIssuerSigningKey = true,
IssuerSigningKey = signKey.Key,
// Validate the token expiry
ValidateLifetime = true,
// If you want to allow a certain amount of clock drift, set that here:
ClockSkew = TimeSpan.FromMinutes(1),
};
app.UseJwtBearerAuthentication(new JwtBearerOptions {
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = tokenValidationParameters
});
ありがとう。それが再び現れたら、私はこれを将来使用します! –