asp.net-mvc - 使用 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 中设置了错误,不确定是什么。
有没有人经历过这样的事情?
解决方案
标题authorize
看起来很可疑。通常Authorization
标头用于身份验证。但是您可能有自定义实现,其中authorize
标头有效。
推荐阅读
- php - Laravel 获取没有 n 个最新条目的条目
- kotlin - 如何正确初始化 ConstraintVerifier 以在 Kotlin 中测试 Optaplanner ConstraintStreams
- ionic-framework - 离子标题标题越过按钮
- swift - swift SceneKit计算节点角度
- python - 在 `dash_table.DataTable` 单元格中显示数组
- asp.net-core - 在 ASP.Net Core 3 中使用 Rabbitmq 的 RPC
- node.js - 获取 Google 访问令牌的问题
- postgresql - 在函数内部使用时选择查询输出错误值
- ios - 如何从活动环中删除锻炼分钟数据?
- javascript - 将 HTML 内容转换为字符串并在文本文件中打印