小编Jon*_*nas的帖子

是否可以将Entity Framework与DB2 iSeries AS/400一起使用

我是Microsoft实体框架的新手,并想知道是否可以将此框架与DB2 iSeries AS/400一起使用?使用这种"遗留系统"时是否有任何问题?和EF框架?

db2 entity-framework ibm-midrange

11
推荐指数
1
解决办法
8364
查看次数

刷新IdentityServer4客户端中的访问令牌

我想知道如何使用混合流刷新IdentityServer4客户端中的访问令牌,并使用ASP.NET Core MVC构建.

如果我已正确理解整个概念,则客户端首先需要具有"offline_access"范围,以便能够使用刷新令牌,这是启用短期访问令牌的最佳实践,并且能够撤消刷新令牌以防止任何新的访问令牌发给客户.

我成功获得了访问令牌和刷新令牌,但是我应该如何处理MVC客户端中访问令牌的实际更新过程?

OpenId Connect(OIDC)中间件可以自动处理吗?或者我应该通过基本检查访问令牌是否已过期或将很快到期(即将到来的30秒)来检查访问令牌的到期时间我通过基本检查访问令牌是否到期(即将到来的30秒)然后通过使用刷新令牌调用令牌端点来刷新访问令牌?

是否建议在Controller操作方法中使用IdentityModel2TokenClient扩展RequestRefreshTokenAsync方法来调用令牌端点?

我已经看到OIDC中间件事件中的代码请求访问令牌并使用响应存储包含过期日期时间的声明.问题是我的OIDC已经以某种方式自动请求访问令牌,因此在收到第一个访问令牌后直接请求新的访问令牌感觉不太好.

没有访问令牌刷新逻辑的Controller操作方法示例:

public async Task<IActionResult> GetInvoices()
    {
        var token = await HttpContext.Authentication.GetTokenAsync("access_token");

        var client = new HttpClient();
        client.SetBearerToken(token);

        var response = await client.GetStringAsync("http://localhost:5001/api/getInvoices");
        ViewBag.Json = JArray.Parse(response).ToString();

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc openid-connect identityserver4

10
推荐指数
1
解决办法
6464
查看次数

IdentityServer4中的Cookie

有人可以解释在Identity Server4中成功登录后发送到用户浏览器的cookie的用途.另外我在底部有三个较小的相关问题.

客户端在Startup.cs文件中定义的ASP.NET Core中使用cookie中间件.

app.UseCookieAuthentication()
Run Code Online (Sandbox Code Playgroud)

很明显,Identity Server创建了哪些令牌以及ASP.NET Core中间件创建了哪些cookie,但我不确定每个cookie包含哪些内容.

ASP.NET Core中间件决定创建分块cookie可能是由于cookie大小(4050B + 865B).

我一直试图找到一种解密cookie的方法,使用ASP.NET Core提供的Data Protection API 读取值,没有任何运气.

  • idsvr
  • idsvr.session
  • .AspNetCore.coookie
  • .AspNetCore.coookieC1
  • .AspNetCore.coookieC2
  • .AspNetCore.Antiforgery.

Internet Explorer中的开发人员工具的屏幕截图

  1. 哪个cookie包含Identity Server发出的id_token,access_token?
  2. CookieName可用于更改ASP.NET核心中间件创建的cookie的名称,如果不同的客户端共享相同的cookie名称,还是需要单独的会话cookie?
  3. 可以使用Data Protection API 解密Identity Server Cookie 吗?

asp.net cookies identityserver4

7
推荐指数
1
解决办法
2850
查看次数

在ASP.NET Core中使用防伪cookie但使用非默认CookieName

我正在考虑在ASP.NET Core中更改默认防伪cookie的名称.

我想更改cookie名称的原因是为了匿名化cookie,在我看来,没有理由为什么最终用户应该能够确定这个cookie的责任.

Microsoft.AspNetCore.Antiforgery.AntiforgeryOptions.CookieName

  1. 如何更改防伪cookie的名称?我想它应该以某种方式在Startup.cs文件中完成?
  2. 通过更改名称默认的防伪cookie可能会产生什么影响?
  3. 如何在ASP.NET Core中使用防伪cookie?
  4. 不同的Web应用程序(使用相同的域)是否应该共享单个防伪cookie,还是应该为每个Web应用程序创建单独的防伪cookie?

asp.net cookies asp.net-mvc asp.net-core-mvc asp.net-core

6
推荐指数
1
解决办法
5612
查看次数

如何将Lookup &lt;string,string&gt;对象序列化为JSON?

我正在尝试通过以下操作将Lookup序列化为JSON:

Lookup<string, string> productIdsByCategory = prodcuts.ToLookup(p => p.Category, p => p.Id);
Run Code Online (Sandbox Code Playgroud)

然后在我的ASP.NET Core WebAPI控制器中,我通过执行以下操作返回:

var response = new ComplexType
{
     PropertyA = productIdsByCategory
     ... other properties left out ...
};
return Json(response)
Run Code Online (Sandbox Code Playgroud)

我的WebAPI在Postman中的响应如下所示:

{
  "PropertyA": [
    [
      "ProductId_A"
    ],
    [
      "ProductId_B"
    ],
    [
      "ProductId_C"
    ]
  ],
  ... other properties left out ...
}
Run Code Online (Sandbox Code Playgroud)

密钥不包含在JSON响应中,是否有可能这样做?

serialization json asp.net-web-api

6
推荐指数
2
解决办法
1094
查看次数

如何比较两个日期时间

我想知道如何使用DateTime方法比较.NET中的两个DateTime对象Compare,CompareTo或者Equals不比较刻度.

我只需要毫秒或秒的容差级别.

如何才能做到这一点?

.net datetime compare equals compareto

5
推荐指数
1
解决办法
5534
查看次数

ASP.NET Core 中的 AntiForgeryConfig.UniqueClaimTypeIdentifier

在 ASP.NET 的早期版本中,我们通常使用名为AntiForgeryConfig.UniqueClaimTypeIdentifier的属性进行基于声明的授权,以根据用于唯一标识用户的身份设置声明类型。

在 ASP.NET Core 中这是如何完成的?

asp.net-core

5
推荐指数
1
解决办法
1227
查看次数

使用 IdentityServer4 限制每个用户的并发会话数

我们有几个用户,我们可能会与其他用户共享他们的用户帐户。我们正在考虑在 IdentityServer4 中添加功能,以限制用户可以拥有的并发会话数量来防止这种行为。

这不会阻止用户在白天不时共享用户帐户,但我们至少可以停止并发使用我们的系统。

我们正在考虑计算每个用户帐户使用的刷新令牌的数量,如果它们超过某个限制,则删除该用户最旧的刷新令牌和访问令牌,直到刷新令牌的数量等于允许的限制。

关于如何使用 IdentityServer4 实现此功能的任何意见?我们还想通知用户为什么引用令牌被删除从而导致注销。

identityserver4

5
推荐指数
1
解决办法
1473
查看次数

是否需要使用Using语句来尝试/捕获/最终处理异常?

我想知道如何使用语句处理异常?我是否需要使用Try/Cath/Finally子句包装using语句,以确保即使包含的代码抛出异常,SqlConnection对象也会被关闭和处理?

Public Function GetUserAccountKeyByUsername(ByVal pUsername As String) As Int32
    If String.IsNullOrEmpty(pUsername) Then
        Throw New ArgumentNullException("pUsername", "Username is missing")
    End If

    Dim o As Object
    Dim userAccountKey As Int32
    Dim SQL As StringBuilder = New StringBuilder()

    With SQL
        .Append("SELECT USER_KEY ")
        .Append("FROM USER ")
        .Append("WHERE USERNAME = @Username ")
    End With

    Try
        Using conn As SqlConnection = New SqlConnection(ConnectionString)
            conn.Open()
            Using cmd As SqlCommand = New SqlCommand(SQL.ToString, conn)
                Try
                    cmd.CommandTimeout = Convert.ToInt32(ConfigurationManager.AppSettings("SQLQueryLimitTime"))
                    cmd.Parameters.Add(New SqlParameter("@Username", SqlDbType.VarChar)).Value = pUsername
                    o = …
Run Code Online (Sandbox Code Playgroud)

.net vb.net ado.net using-statement

4
推荐指数
2
解决办法
7428
查看次数

如何将分页应用于数据集?

如何将分页应用于数据集?我有一个方法,我从数据集动态构建一个表.查询从中获取数据集的数据库不是问题,但是从数据集迭代数据行很慢.

为了在加载包含大量数据行的页面时提高性能,我想应用分页功能.

一个好的功能是用户能够设置pagesize(每页显示多少行).

.net asp.net pagination dataset

3
推荐指数
1
解决办法
6761
查看次数