问题标签 [asp.net-core-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
348 浏览

asp.net-core - 使用 VS2017 在 Windows 10 上从 github 构建 aspnet 核心源

我想深入研究托管在 gihub 上的 asp.net 核心资源。

因此asp.net core security,可以在这里找到 - https://github.com/aspnet/Security

我已经下载并安装了 GitHub 桌面。我已经在我的机器上本地克隆了 repo。我正在查看开发分支:

开发者

我已经从https://www.microsoft.com/net/core/preview#windowscmd下载并安装了 SDK ,我认为这是项目的目标(我可能错了),但这里是 authentication.csproj:

有一个解决方案文件(Security.sln)和一个 build.cmd、build.ps1、build.sh。我希望加载解决方案并进行编译,但事情似乎不再那么简单了。

运行了似乎安装了一些东西的 build.ps1,然后运行了似乎执行的 build.cmd,我已经在 VS2017 中加载了解决方案。我只是无法建造任何东西。

错误窗口目前正因一组错误而变得疯狂,这些错误似乎卡在从 10 上升到 88 的循环中,然后在无限循环中回到 10。

我在任何地方都找不到有关构建这些解决方案的任何信息。谁能告诉我建造它们需要什么?已经很晚了,已经是漫长的一天,我的眼睛受伤了。

以下是错误/警告的选择:

0 投票
1 回答
7205 浏览

asp.net-core - Asp.Net Core 自定义授权总是以 401 Unauthorized 结尾

我正在尝试使用 asp.net 核心实现自定义身份验证/授权流程,但未能这样做。身份验证似乎工作正常:如果我逐步调试,我可以看到一个 AuthenticationTicket 是从包含 isAuthenticated 为 true 的身份的 ClaimsPrincipal 创建的:

但是,我尝试在此之后添加一个虚拟 AuthorizationHandler:

并在我的启动文件中使用此代码:

但是每当我在控制器上添加“[Authorize("My")]”时,所有调用总是返回 401。而且我的 AuthorizationHandler 永远不会到达。这个问题看起来类似于基于 Asp.Net Core 策略的授权以 401 Unauthorized 结尾,但与我的情况略有不同,因为我有一个经过身份验证的用户。我正在努力调试 asp.net MVC 源代码,所以我真的不知道发生了什么。

0 投票
1 回答
757 浏览

azure-active-directory - 在 Asp.net Core 2.1-* 中用于多租户的动态 OpenIdConnectOptions

我正在使用 aspnetcore v2.1(最新的开发分支)来创建一个多租户应用程序,其中每个租户都针对他们自己的 Azure B2C AD 租户进行身份验证。选择这种方法是为了让每个租户的电子邮件/密码选择和社交登录关联都是唯一的。

我想根据当前租户身份(我根据主机名确定)应用正确的 ClientId 和权限,而不是在 Startup.ConfigureServices 中应用静态 ClientId。根据之前对 2.0-* 代码的检查,我一直在使用 IOptionsSnapshot 来允许我应用正确的选项,如下所示。

在 Startup.ConfigureServices 中:

在 Startup.Configure 中:

实施:

但是,现在我发现我的 OpenIdConnectOptionsSnapshot 不再被实例化或引用。

在 AspNetCore Security 2.1.0-* 下应用动态每租户 ClientId、Authority 等的正确方法是什么?

(我愿意接受“你做错了”以及为没有预先存在 AzureAD 足迹的租户提供实现多租户的不同方法的建议)

0 投票
0 回答
3148 浏览

asp.net - ASP.NET Identity - 如何延长登录过期时间

我的ASP.NET Core 1.1.1应用程序在大约 30 分钟后退出。我正在使用一些会话变量,并且已经安装Microsoft.AspNetCore.Session package并配置了应用程序,如下所示。已将会话到期时间设置为 2 小时。从我读到的 Authentication Cookie 时间默认为 14 天,所以这应该不是问题。问题:看来我可能在这里遗漏了一些东西。需要做什么才能让应用在 2 小时前不注销?可能的原因是什么,可能的解决方案是什么?

注意:该应用程序正在运行IIS 10 on windows 10。该应用程序的应用程序池设置为Not Managed Code,默认空闲超时为 20 分钟,空闲 timtout-action 设置为Terminate。但据我所知,IIS 应用程序池空闲超时设置在 ASP.NET Core 中没有任何作用。

启动.cs

0 投票
3 回答
2217 浏览

asp.net-core - 当在 jwt 承载处理程序中配置的不同别名下到达站点时,验证颁发者失败

我有使用 jwt 不记名身份验证的 web api。创建 jwt的实现 ( openiddict ) 使用当前 url 作为颁发者。

我将 jwt 身份验证处理程序配置为使用有效的颁发者。

当我到达下面的站点时,http://test/我获得了一个访问令牌,其中颁发者设置为http://test/. 由于Authority匹配发行者,请求将被验证。

当我到达下面的站点时,http://125.124.35.21/我获得了一个访问令牌,其中颁发者设置为http://125.124.35.21/. 由于Authority与发行者不匹配,因此不会对请求进行身份验证。

我希望在这两种情况下都能够验证请求。

现在我看到根据jwt rfciss声明是可选的。

我的问题是我是否可以ValidateIssuer为此目的设置为 false,如果我这样做时会打开一个安全漏洞,是否有更推荐的替代方案?

使用哪个配置来解决.well-known/openid-configurationAuthority希望不是发行者,因为这意味着每个人都可以发行令牌并将其与我的 api 一起使用。

0 投票
0 回答
329 浏览

asp.net-core - Aspnetcore.Authentication.JwtBearer 的 Logsource 是什么

我有 aspnetcore2 api 正在使用IdentityServer4.AccessTokenValidation和包Microsoft.AspNetCore.Authentication.JwtBearer来处理访问令牌身份验证。

我已经使用以下配置在我的应用程序中设置了 Serilog 日志记录:

我能够覆盖日志级别SystemMicrosoft日志源。

但是,我的日志文件中仍然收到以下日志条目:

我似乎无法弄清楚日志源,Microsoft.AspNetCore.Authentication.JwtBearer所以我可以像我一样将它们过滤掉,System并且Microsoft.

0 投票
1 回答
2151 浏览

angularjs - 如何保护 ASP.NET Core Web API 免受被盗 JWT 令牌以进行模拟

我在 IIS 后面的服务器中部署了一个 ASP.NET 核心 REST API。REST API 由 Angular JS Web 应用程序和移动(Android/IOS)应用程序使用。对于授权,我使用的是 JWT token()。最近通过安全审计,他们发现存储在本地存储中的 JWT 可以被同一组织的其他攻击者窃取并用于冒充(例如,员工利用经理的功能)。

我想将这个人或那台机器标记到那个 JWT 上,这样当 JWT 被盗时,攻击者就不能滥用它,或者不会使用那个被盗的令牌。我尝试使用 JWT 令牌标记 IP 并将这些查找存储在服务器中(在内存缓存中)。下面是我试过的代码,没有用。

每次我从不同的机器请求时,我都希望输出不同。但是每次像 15.11.101.25 这样的实际输出都是相同的 IP(尽管我从不同的机器上尝试过)。如果有的话,请与我分享一些更好的解决方案。原谅我的英语。

0 投票
2 回答
9171 浏览

c# - .AspNetCore.Correlation。未找到国家财产。未知位置

我正在使用 OIDC 的混合身份验证流程。

在上面的代码中,我手动设置了“状态”属性(这是由 ASP.Net 核心团队建议的,方式不完全相同。请参阅下面的 github 问题链接),但它不起作用。

在回调时,它给出警告为“.AspNetCore.Correlation.state property not found”,然后它失败(根据下面的 github bug)“来自 RemoteAuthentication 的错误:Correlation failed..

https://github.com/aspnet/AspNetCore/issues/7501

那么我做错了什么。因为上述错误中给出的建议是不可能的,因为它有一些我在这个事件中没有的值。

我错过了什么(或必须做些什么才能完成这个流程)?

0 投票
2 回答
916 浏览

asp.net-core - 指定 Windows AuthenticationScheme 和角色不起作用

如何指定AuthenticationSchemeisWindows并检查用户是否是 AD 组的成员?

当我指定时AuthenticationScheme,设置Roles不再有效,为什么不呢?我该如何解决?

GitHub 上的完整示例


一些背景

我们有一个名为的 AD 组SOME GROUP,用户必须是其成员才能执行某些操作。在 Web 应用程序的其他部分,我们使用 cookie 身份验证,因此我需要在此特定控制器中指定身份验证方法。

参考:使用 ASP.NET Core 中的特定方案进行授权

0 投票
1 回答
43 浏览

.net-core - 是否需要使用 .Net Core Secret Management 工具?

.Net Core 带有一个秘密管理工具,用于存储用于开发目的的秘密。如果我正确理解了文档,则不涉及加密,并且所有内容都以纯文本形式存储。

现在的问题是,如果我们可以从文件中读取,为什么要使用这种相对繁琐的方法,appsettings.secrets.json例如更容易使用和查看秘密并将其添加到 .gitignore 以便它永远不会出现在源代码管理中。

使用这种更简单的方法是否有任何我没有考虑过的安全问题?

PS我只能想到不小心提交秘密文件的危险,但除非你更改整个 .gitignore 文件,否则这并不容易