- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基于 IS4 身份示例的 IdentityServer4 应用程序,以及一个使用不记名 token 通过 IS4.AccessTokenValidation 进行授权的 API。这通过 VisualStudio 在本地主机上运行良好,当我部署到 Windows 2012 VM 并通过 IIS 托管时,运行良好。当我将身份服务器作为应用服务网站部署到 Azure 时,一切都很好。但是,当使用与 VM 相同的域和证书将 API 部署为应用服务时,任何具有 Authorize 属性的方法(无论是否有策略)始终返回 401 以及 header 消息:
Www-Authenticate: Bearer error="invalid_token", error_description="The signature key was not found"
我们使用的是 .NET 4.5.2,以及最新版本的 IdentityServer4 和 IdentityServer4.AccessTokenValidation 包。我还从 2016 年 8 月 30 日起从 GitHub 中提取了这些软件包的最新版本,没有任何更改。无论如何,我不认为这是 IS4 Validator 的错误,但我不知道可能是什么原因导致的。有什么建议么?这是 Azure 主机错误吗?
我很想能够对此进行调试,但即使我从头开始重建,我也无法对这个应用程序进行远程调试,并且应用程序日志没有告诉我任何信息。我翻遍了 ASP.NET Security 存储库,但没有更多日志记录或调试访问权限,我对如何解决此问题一无所知。
API 配置非常基本:
var jwtBearerOptions = new JwtBearerOptions()
{
Authority = Configuration["Authentication:IdentityServer:Server"],
Audience = Configuration["Authentication:IdentityServer:Server"]+"/resources",
RequireHttpsMetadata = false,
AutomaticAuthenticate = true,
AutomaticChallenge = true,
};
app.UseJwtBearerAuthentication(jwtBearerOptions);
身份服务器直接来自示例,并使用购买的证书进行签名。
还有其他人将此配置完全用作 2 个 Azure 应用服务吗?或者,如果发送到 VM 托管 API 的相同不记名 token 是可接受的,则可能导致此错误的原因是可以接受的。
最佳答案
事实证明,您需要在 TokenValidationParameters
中显式设置 IssuerSigningKey
。因此,我从应用服务存储中获取证书,并通过 JwtBearerOptions.TokenValidationParameters 添加它。所以启动配置如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap = new Dictionary<string, string>();
var tokenValidationParameters = new TokenValidationParameters
{
// The signing key must match!
ValidateIssuerSigningKey = true,
IssuerSigningKey = new X509SecurityKey(GetSigningCertificate()),
// Validate the JWT Issuer (iss) claim
ValidateIssuer = false,
//ValidIssuer = "local",
// Validate the JWT Audience (aud) claim
ValidateAudience = false,
//ValidAudience = "ExampleAudience",
// Validate the token expiry
ValidateLifetime = true,
// If you want to allow a certain amount of clock drift, set that here:
ClockSkew = TimeSpan.Zero
};
var jwtBearerOptions = new JwtBearerOptions()
{
Authority = Configuration["Authentication:IdentityServer:Server"],
Audience = Configuration["Authentication:IdentityServer:Server"]+"/resources",
RequireHttpsMetadata = false,
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = tokenValidationParameters
};
app.UseJwtBearerAuthentication(jwtBearerOptions);
app.UseMvc();
...
}
不知道为什么只在 Azure 应用服务上需要,而不是在服务器或开发计算机上。还有人能解释一下吗?它建议 ValidateIssuerSigningKey 对于应用服务默认为 true,而在其他地方默认为 false。
关于asp.net-core - IdentityServer4 Authorize 在 Azure AppService 上始终获取 "The signature key was not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39260843/
进程文件: appservices or appservices.exe 进程名称: Appservices 进程类别:存在安全风险的进程 英文描述: AppServices.exe is
有没有办法在 Azure 应用服务中将 Word 文档转换为 PDF?我无法使用任何 Office 库,因为我不需要任何 Office 依赖项。许多第三方解决方案似乎都使用 GDI+,但这在 Az
使用“数组”类型的参数替换为网站槽应用程序设置的 AppService 部署失败,并出现以下错误。 2019-10-20T10:25:46.0572018Z ##[error]BadRequest:
我需要使用 AppService 访问虚拟机。当我尝试与 VNET 集成时,我得到了这个信息。 它只是说 VNet 配置失败,仅此而已。 AppService 计划属于高级版。 这可能是什么原因造成的
我的 .NET Core 6 应用服务在 Program.cs 中具有以下设置: var builder = WebApplication.CreateBuilder(args); builder.S
我的 .NET Core 6 应用服务在 Program.cs 中具有以下设置: var builder = WebApplication.CreateBuilder(args); builder.S
我有一个作为 Azure 应用服务(一项 Web 作业)托管的 .Net 应用,它从一个事件中心读取数据并对这些消息执行一些操作。此应用不受 CPU 或内存限制,相反,我希望根据事件中心传入消息的数量
有没有办法从负载均衡器中排除 AppService 实例: 通过门户网站? 通过 SDK? 通过 SDK 是理想的选择,一旦所有初始化完成,我们就可以设置 MakeVisibleToLoadBalan
我已使用 Github Actions 将基于 Docker 化的 Django 的 Web 应用程序部署到 AppService (Linux)。 我的应用程序有一个 4.2MB 的 .csv 文件
我们的项目正处于起步阶段,希望确定我们可以利用 Azure 提供的哪些技术。首先,我们将拥有移动应用程序,然后是网络应用程序。为此我们需要 API。我真的不想为移动和网络创建单独的 api。这就是为什
首先,我为我糟糕的英语感到抱歉:'(。 我正在开发一个客户端,用于将 POST 消息发送到 Azure AppService 中托管的 WebAPI。我读到最佳实践是使用单例模式,所以我就这样开发了。
我有一个旧版本的 appservice Plan,它连接到 VNET/Subnet 。当我想将其升级到 VNET 集成时,应用程序服务计划被完全删除。但是,当我尝试使用相同的 VNET/子网重新部署应
作为部署的一部分,我想调用应用程序中的某个端点来对其进行冒烟测试。但我们正在使用访问限制,并且来自 Azure Devops Release Pipeline 的调用被拒绝。有办法解决这个问题吗? 最
我有一个旧版本的 appservice Plan,它连接到 VNET/Subnet 。当我想将其升级到 VNET 集成时,应用程序服务计划被完全删除。但是,当我尝试使用相同的 VNET/子网重新部署应
作为部署的一部分,我想调用应用程序中的某个端点来对其进行冒烟测试。但我们正在使用访问限制,并且来自 Azure Devops Release Pipeline 的调用被拒绝。有办法解决这个问题吗? 最
考虑以下示例:https://github.com/StefanWickDev/UWP-FullTrust/tree/master/UWP_FullTrust_3 UWP应用创建AppService时
我使用asp.net webapi编写了一个api,并将其部署在azure中作为Appservice。我的 Controller 的名称是 TestController,我的操作方法如下所示。
如何在UWP AppService中访问系统盘(C盘、D盘)文件。示例:我想从 UWP AppServices 访问“C:\Test\sample.txt”文件。 我试过下面的代码。但抛出错误(附加信
我无法通过 ssh 访问 Azure 应用服务 WordPress 站点,并且它似乎已在其中被禁用。 引用以下网址来设置网站。 https://learn.microsoft.com/en-us/az
我们面临的挑战是实现既可以部署在 Azure 云(按需)也可以部署在本地 LAN 场景中的服务。这对于 .NET-Core、SQL-Server、Redis 等来说没问题。 我们缺少的是功能即服务或
我是一名优秀的程序员,十分优秀!