首页 > 解决方案 > 使用 POSTMAN 对 OPENID 服务器进行身份验证

问题描述

我是 OpenID 和 OAuth 2.0 的新手。

我有自己的 API(它不在 .net 核心中,而是在 .net 4.6 中),我试图通过发送带有访问令牌的请求来使用Postman ,以访问API 应用程序中的[Authorize]资源我自己的。

该 api 配置为以隐式模式调用 OpenID 服务器,因此我可以获取access_token并从另一个客户端使用它。

调试应用程序时没有任何问题;它针对 OAUTH 服务器进行身份验证并保存状态,但是由于某种原因,当我尝试向我的 API 的资源发送请求时,它仍然将我重定向到 OAUTH 服务器的身份验证页面,就好像我没有登录一样.

这是我的 API 中的启动:

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "Cookies",
            CookieName = "AuthCookieCoolApp",

        });

        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
        {
            Authority = OidcAuthority,
            ClientId = OidcClientId,
            //ClientSecret = OidcClientSecret,
            GetClaimsFromUserInfoEndpoint = true,
            PostLogoutRedirectUri = OidcRedirectUrl,
            RedirectUri = OidcRedirectUrl,
            // ResponseType = OpenIdConnectResponseType.Code,
            Scope = OpenIdConnectScope.OpenId,
            RequireHttpsMetadata = false,
            ResponseType = OpenIdConnectResponseType.CodeIdTokenToken,
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                MessageReceived = notification =>
                {
                    var message = notification.ProtocolMessage;
                    var accesstoken = message.AccessToken;
                    return Task.FromResult(0);
                }
            }
        });
    }

也许它与饼干有关,但我不确定。

事情是,当我调试我的 asp.net 应用程序时,这很好用:标记有 [Authorize] 属性的端点仅在 OAuth 服务器中经过身份验证时才允许使用。但由于某种原因,我不能从邮递员那里使用它:

首先,我发送此请求以获取 access_token:

在此处输入图像描述

然后我尝试在调用我的 API 的 [Autorize] 方法的不同请求中使用相同的获得的访问令牌,但它会将我重定向到 OAuth 服务器的登录页面:

在此处输入图像描述

我可能在 API 中设置了错误,不确定是什么。

有没有人经历过这样的事情?

标签: asp.net-mvcpostmanopenid-connectkeycloak

解决方案


标题authorize看起来很可疑。通常Authorization标头用于身份验证。但是您可能有自定义实现,其中authorize标头有效。


推荐阅读