2

DelegatingHandler で Asp.Identity を使用してユーザーを認証しようとしています。

上記のコードのように:

public class TokenAuthentication : DelegatingHandler {
        private readonly AuthenticationIdentityManager _identityManager;

        public TokenAuthentication() {
            _identityManager = new AuthenticationIdentityManager(new IdentityStore(new NFeDb()));
        }

        private Microsoft.Owin.Security.IAuthenticationManager AuthenticationManager {
            get {
                return HttpContext.Current.GetOwinContext().Authentication;
            }
        }

        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
            if (request.Headers.Contains("X-TokenCliente")) {
                var tokenCliente = request.Headers.GetValues("X-TokenCliente").First();
                var s = _identityManager.Authentication.SignIn(this.AuthenticationManager, tokenCliente, false);
                if (s.Success) {
                    return await base.SendAsync(request, cancellationToken);
                }
            }

            return request.CreateResponse(HttpStatusCode.Unauthorized);
        }
    }

しかし、Authorize 表記を使用したコントローラーでは、次のようになります。

[Authorize]
        public HttpResponseMessage Get() {
            return Request.CreateResponse(HttpStatusCode.OK);
        }

ログイン ページにリダイレクトされた 302 ステータス e を受け取りました。DelegatingHandler で認証することは可能ですか?

更新: OwinMiddleware を使用する必要があるかどうかわかりません

4

1 に答える 1