使用POSTMAN对OPENID服务器进行身份验证

时间:2020-01-21 06:37:45

标签: asp.net-mvc postman openid-connect keycloak

我是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);
                }
            }
        });
    }

也许与Cookie有关,但是我不确定。

事实是,当我调试asp.net应用程序时,此方法工作正常:仅在OAuth服务器中进行身份验证时,才允许标有[Authorize]属性的端点。但是由于某些原因,我无法在Postman中使用它:

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

enter image description here

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

enter image description here

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

有人经历过类似的事情吗?

1 个答案:

答案 0 :(得分:2)

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