OAuth自定义提供程序-转到未授权,不会重定向到登录提供程序页面

时间:2019-01-22 15:48:02

标签: asp.net-core oauth-2.0

OAuthPrompt返回过期的令牌,并退出而不显示登录卡。

ASP Net Core 2.2。 剃刀页面。

这确实工作了一段时间,但现在突然恢复了原状。在其他浏览器上/隐身模式下运行时,它可以正常运行并转到自定义提供程序的登录页面

我可以以某种方式清除cookie吗?如何强制用户返回登录页面?

任何提示表示赞赏。

这些是我的设置选项。

    public class AuthenticationMiddleware
{
    public static void SetOAuth2Options(OAuthOptions options)
    {
        options.ClientId = XXX;
        options.ClientSecret = XXX;
        options.AuthorizationEndpoint = XXX;
        options.TokenEndpoint = XXX;
        options.UserInformationEndpoint = XXX; 
        options.CallbackPath = new PathString("/signin-XXX");
        options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "UserId");
        options.ClaimActions.MapJsonKey(ClaimTypes.Email, "EmailAddress", ClaimValueTypes.Email);
        options.ClaimActions.MapJsonKey(ClaimTypes.Name, "Name");
        // Register to events
        options.Events = new OAuthEvents
        {
            OnCreatingTicket = async context =>
            {
                var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var response = await context.Backchannel.SendAsync(request, context.HttpContext.RequestAborted);
                response.EnsureSuccessStatusCode();

                // Parse user data into an object
                var user = JObject.Parse(await response.Content.ReadAsStringAsync());
                context.HttpContext.Response.Cookies.Append("token", context.AccessToken);
                context.RunClaimActions(JObject.FromObject(user));
            },
            OnRemoteFailure = context =>
            {
                context.HandleResponse();
                context.Response.Redirect("/signin-XXX");
                return Task.FromResult(0);
            },
        };
    }

0 个答案:

没有答案