asp.net-web-api - .NET Framework WebApi Owin UseOpenIdConnectAuthentication 中的 IdentityServer4 身份验证
问题描述
因此,我在一个单独的应用程序中设置了 IdentityServer4,该应用程序将在代码中引用WebConfigurationManager.AppSettings["IdentityServer:Authority"]
。
我有一个 .NET Framework 4.6.1 WebApi 应用程序,需要点击此应用程序来验证请求。我在 IdentityServer4 应用程序中将 WebApi 应用程序设置为 ApiResource“mywebppi”。
要在 .NET Core 应用程序中执行此操作,只需在 Startup.cs 中添加以下代码即可:
services.AddAuthentication(Authentication.Bearer)
.AddJwtBearer(Authentication.Bearer, options =>
{
options.Authority = Configuration.GetSection("IdentityServer:Authority").Value;
options.RequireHttpsMetadata = false;
options.Audience = "mywebppi";
});
但是,由于这是一个 .NET Framework 4.6.1 WebApi 应用程序,我不能这样做。我读到您可以使用 IdentityServer3.AccessTokenValidation 和 Owin 来执行此操作,但是由于 IdentityServer3 nuget 包依赖于 IdentityModel 1.9.2 到 2.0.0,并且我的 WebApi 应用程序已经使用 IdentityModel 3.10.10 并且不能降级那么远,所以这是不是一个选择。
我在其他地方发现了有关尝试使用 Owin 的 UseOpenIdConnectAuthentication 的信息。我试过这个:
[assembly: OwinStartup(typeof(MyWebApi.Startup))]
namespace MyWebApi
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType("Bearer");
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = WebConfigurationManager.AppSettings["IdentityServer:Authority"],
Scope = "mywebapi",
ResponseType = "id_token",
UseTokenLifetime = false,
RequireHttpsMetadata = false,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
SignInAsAuthenticationType = "Bearer"
});
}
}
}
但是,我不断收到“消息”:“此请求的授权已被拒绝。”
解决方案
我建议您在 web api 上打开 OWIN 日志以便能够查看问题的详细信息,这里是一个将日志设置为 NLog 的示例
推荐阅读
- symfony - 与多个查询冲突 Doctrine(Symfony 2 网站)
- laravel - Laravel 5.5 - 部署到 Elastic Beanstalk,db:seed 未运行
- java - 在 MacOS 上安装 Semoss 的问题
- kubernetes - 设置 CLOUDSDK_CONFIG 时无法使用 go 客户端访问 Kubernetes 集群
- informatica-powercenter - 如何在 informatica 的连接器中两次使用相同的源限定符
- sql - 将行转换为像枢轴一样的列
- vue.js - Invalid or Unexpected Token - Vue.js,在实现 vue-gallery(vue 的 Blueimp Gallery)之后
- python - 返回黑屏的简单 Kivy (1.11.0) 示例
- javascript - 前 n 次匹配的正则表达式
- objective-c - iOS 12 OTP 键盘建议