我试图确定为 .Net Core 3.0 提供的 JwtBearer 服务是否实际上使用了我的 oidc 提供商众所周知的配置提供的非对称签名密钥?
我找不到与此相关的任何文档。
.AddJwtBearer(opt =>
{
opt.Authority = "http://localhost:8180/auth/realms/master";
opt.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true
};
Run Code Online (Sandbox Code Playgroud)
我使用 Keycloak 4.8.3 作为我的 oidc 提供程序。我能找到的最接近的文档在这里。https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide
相关部分在这里:
如果您让 JwtBearer 中间件通过发现文档自动配置,这一切都会自动运行!
上面的代码完成了所有这些吗?由于我们不再注册中间件,这在 3.0 中仍然相关吗?
我敢打赌很多人不了解非对称签名密钥,也不知道它们为何如此重要。我们已经从开发人员那里抽象了太多东西,现在我什至不知道我的 api 是否安全。
所以最后的问题是:
具有“ValidateIssuerSigningKey”的 .AddJwtBearer 服务是否定期检查众所周知的或任何发现文档以获取最新的非对称签名密钥?
这个问题主要集中在如何在开发代码时管理代码,使其具有高适应性等.让我通过这个例子来解释,它会更有意义."如果我需要的话,我会加上赏金."
我们的服务器内存紧张,我们正在使用Javascript/Jquery将大量的排序工作推到客户端,以缓解这些问题.如果你想跟随,这就是小提琴.https://jsfiddle.net/ydc6ywuz/23/
这个代码带来了问题.
var sortSubSite = $('.AccessSitesLinks.False');
var subArr = sortSubSite.map(function(_, o){
return {
t: $(o).text(),
h: $(o).attr('href'),
c: $(o).attr('class')
};
}).get();
sortSubSite.each(function(i, o) {
var classList = $(o).attr('class').split(/\s+/);
$('.ContainingBox.AccessSitesLinks.True.'+ classList[2]).append($(o));
$(o).wrap("<div class='ContainingBox2'></div>");
$(o).text(subArr[i].t);
$(o).attr('href', subArr[i].h);
$(o).attr('class', subArr[i].c + classList[2]);
});
Run Code Online (Sandbox Code Playgroud)
每个Home
站点都有这个类AccessSitesLinks True [Num]
.所以它的所有子网都会有AccessSitesLinks False [Num]
.我理解sortSubSite和SubSite是相似的,可以组合起来以便更具可扩展性,这也是问题的一部分.
新的业务要求是能够SubSites
按字母顺序排序.这就是问题发挥作用的地方.如何使用现有代码并重构它以不断满足业务需求?我可以像我一样使代码排序Home Sites
,但是,这似乎不可扩展,只是创建另一个函数来调用.我有科技部的变量,数组和函数按字母顺序排序已.从设计角度来看,我有什么遗漏的东西吗?这只是缺乏经验,所以我无法看到如何正确设计?
编辑
我想更多地澄清这个问题.是的,我$(o)
多次获得该对象,这可能效率低下.这个问题更多的是关于如何重新设计,而编码仍在继续,而不是持续的片断代码.
那里有数以百万计的指南,而且似乎没有一个人能做我需要的.我正在创建一个身份验证服务器,只需要发出,并验证/重新发出令牌.所以我无法创建一个中间件类来"验证"cookie或标题.我只是接收字符串的POST,我需要以这种方式验证令牌,而不是Authorize
.net核心提供的中间件.
我的启动包括唯一的令牌发行者示例我可以开始工作.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseExceptionHandler("/Home/Error");
app.UseStaticFiles();
var secretKey = "mysupersecret_secretkey!123";
var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey));
var options = new TokenProviderOptions
{
// The signing key must match!
Audience = "AllApplications",
SigningCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256),
Issuer = "Authentication"
};
app.UseMiddleware<TokenProviderMiddleware>(Microsoft.Extensions.Options.Options.Create(options));
Run Code Online (Sandbox Code Playgroud)
我可以在创建中使用中间件,因为我只需要截取正文以获取用户名和密码.中间件从前面的Startup.cs
代码中获取选项,检查请求路径并从下面的上下文生成令牌.
private async Task GenerateToken(HttpContext context)
{
CredentialUser usr = new CredentialUser();
using (var bodyReader = new StreamReader(context.Request.Body))
{
string body = await bodyReader.ReadToEndAsync();
usr = JsonConvert.DeserializeObject<CredentialUser>(body); …
Run Code Online (Sandbox Code Playgroud) 关于如何制作生产设置,指南似乎不是很清楚(至少对我来说).他们只是谈论其中一些是如何工作的,但没有一步一步的指导.我做了以下事情:
尝试使用本指南更改Project中的环境变量
尽管Microsoft Doc明确声明要重用,但我收到此错误ASPNETCORE_ENVIRONMENT
.我无法保存这些设置
忽略此问题,看起来您可以手动创建这些条目,launchSettings.json
所以我有:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:18549/",
"sslPort": 44319
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/v10Staff",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_ENVIRONMENT_T": "Test"
}
},
"IIS Express (Stage)": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/v10Staff",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Stage"
}
},
"ApplicationName": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "http://localhost:60000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_ENVIRONMENT_T": "Test"
}
}
}
Run Code Online (Sandbox Code Playgroud)
将环境变量添加到服务器
我根据我去过的文档添加了环境变量 …
我有一个.Net核心Web应用程序和.net核心库.使用Dapper时,我需要传入一个继承自的Dachper IDbConnection
.问题是.Net Core System.Data
不是一个可行的参考,看起来他们正在废除它.
是否有.Net替代品或nuget包我可以在哪里使用.我需要连接到Microsoft Sql Server 2016
编辑
我试图创建.Net标准库,看看我是否可以使用System.Data
这种方式.我也无法添加System.Data
到新项目中.
编辑2
我找到了一个nuget包System.Data.Common.这似乎工作它有接口,IDbConnection
但我看不到连接到SQL的方法.我必须自己实现IDbConnection
.所以我又不知所措了.
我试图重新组织由服务器端代码创建的一些信息.服务器绑定内存,所有排序和显示将需要使用javascript/jquery在客户端处理.html是......
<div>
<a href="https://en.wikipedia.org" class="AccessSitesLinks true 1">Wikipedia Home</a>
<a href="https://en.wikipedia.org/wiki/Gold" class="AccessSitesLinks false 1">Wikipedia Gold</a>
<a href="https://google.com" class="AccessSitesLinks true 2">Google Home</a>
<a href="https://mail.google.com/" class="AccessSitesLinks false 2">Google Mail</a>
<a href="https://en.wikipedia.org/wiki/Mushroom" class="AccessSitesLinks false 1">Wikipedia Mushrooms</a>
<a href="https://facebook.com" class="AccessSitesLinks true 3">FaceBook Home</a>
<a href="https://facebook.org/about" class="AccessSitesLinks false 3">FaceBook About</a>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的进步小提琴https://jsfiddle.net/ydc6ywuz/1/
总体目标是排序AccessSitesLinks true
为根网站.这意味着任何false
应该根据后面的数字附加到根网站的css类false
.最好的例子就是维基百科的首页是true
和1
,像蘑菇和黄金地点将是false
和1
.
这不是我的问题所在.当我运行这个Javascript代码.排序完美.但是href值保持不变.尽管它们在Console.log部分是正确的.
function setFields() {
var sortSite = $('.AccessSitesLinks.true');
var arr = sortSite.map(function(_, o) {
return {
t: …
Run Code Online (Sandbox Code Playgroud) 我正在使用Newtonsoft.JSON。我不知道传递给此方法或检索到该方法DeserializeObject
的对象的类型,因此我试图在不知道其类型的对象上使用。
这可能吗?如果是这样,怎么办?这是我的代码。
public static List<T> GetObject<T>(string cacheKey, IEnumerable<T> obj)
{
using (HttpClient client = new HttpClient())
{
var response = client.GetAsync("http://localhost:53805/api/NonPersisted/Get/" + cacheKey).Result;
obj = JsonConvert.DeserializeObject<obj.GetType>(response.Content.ToString());
return obj.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
我首先尝试使用
obj = JsonConvert.DeserializeObject<List<T>>(response.Content.ToString());
显然,这是行不通的,它无法解析。它说,获取对象的类型不会建立obj is a variable but used like a type
。
编辑
看来您可以在List<T>
不知道类型的情况下使用泛型JsonConvert.DeserializeObject<>
。真正的错误是,response.Content
该类仅返回该类型。你需要...
obj = JsonConvert.DeserializeObject<List<T>>(response.Content.ReadAsStringAsync().Result);
Run Code Online (Sandbox Code Playgroud) 我曾经在 Visual Studio 中调试和连接到 SQL Server 时使用集成安全性从来没有问题。
现在使用 Windows 10 和 Visual Studio 2017,当我使用 Integrated Security 尝试连接到 SQL Server 时,出现异常
System.Data.SqlClient.SqlException: Cannot open database "DataManagement" requested by the login. The login failed.
Login failed for user 'MicrosoftAccount\x.x.christopher@gmail.com'.
我在我自己的本地机器上连接到 SQL Server。因此,如果我可以在本地使用 Windows 身份验证连接到 SQL 服务器。然后集成安全应该选择相同的帐户并使用它。
服务器名称为:DESKTOP-5REGML8\SQLEXPRESS
身份验证确认为:Windows Authentication
用户名:DESKTOP-5REGML8\clark
我在代码中的连接字符串是 Data Source=DESKTOP-5REGML8\SQLEXPRESS;Initial Catalog=DataManagement;Integrated Security=True
男孩,这很奇怪,我想我通过运行 SQL 脚本找到了解决方法。但我宁愿确认集成安全性正在发挥作用。是否有更好的解决方案符合以前版本的 Visual Studio/Windows?
假设您有两个实体,但没有“关系”实体,您将如何删除关系?
假设以下实体...
模型类:
public class DisplayGroup
{
[Key]
public int GroupId { get; set; }
public string Description { get; set; }
public string Name { get; set; }
public ICollection<LookUpGroupItem> LookUpGroupItems { get; set; }
}
public class DisplayItem
{
[Key]
public int ItemId { get; set; }
public string Description { get; set; }
public string FileType { get; set; }
public string FileName { get; set; }
public ICollection<LookUpGroupItem> LookUpGroupItems { get; set; }
}
public class …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为基于 RISC-V 的板创建一个引导程序。我正在遵循本指南,并将其调整为 riscv。 osdev
我遇到的问题是翻译这条指令。
times 510 -( $ - $$ ) db 0
我能想到的最好的方法是只填充 63 行,.8byte 0
但这似乎不太可行。
这是完整的代码。
#################################
########### Boot Init ###########
#################################
.section .text
start: # begins the program
nop # the do nothing instruction
j start # loops back to start
# Todo:: figure out the size of the np and j instruction
# The intent of this portion is to fill the remaning bin file with 0's up until the last two …
Run Code Online (Sandbox Code Playgroud)