问题标签 [aspnet-contrib]

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 回答
751 浏览

asp.net-core - 使用 OpenIdConnect 服务器 (ASOS) 手动生成访问令牌

我在asp.net core 1.1项目中实现Aspnet OpenIdConnect Server (ASOS),我目前正在尝试使用 Microsoft.AspNetCore.TestHost.TestServer实现一些集成测试 ( & )。xunitmoq

我遇到的问题是手动生成一个伪造的访问令牌来填充AuthenticationHeaderValue请求HttpClient。寻找一个可行的解决方案,但到目前为止我没有成功。

所以我的问题是:任何人都知道如何为 TestServer 手动生成访问令牌,而无需调用 ASOS 的令牌端点进行测试?

0 投票
0 回答
600 浏览

openid-connect - 使用 ASOS 实现两个因素

我可能搞错了,但我一直在关注本文中的示例设置:使用 ASOS 创建您自己的 OpenID Connect 服务器,但是,它没有解释如何实现两个因素,因为这不是主要目的文章。

本文中唯一提到的两个派系是在令牌端点中,其中检查了两个因素身份验证,如果启用了两个因素,它会拒绝对令牌的请求。所以我在我的客户端应用程序中添加了一个检查,检查特定的拒绝条件,然后重定向到一个要求两个因素代码的页面。此页面首先调用授权端点,该端点将代码发送到存档的用户手机。然后,一旦用户输入了代码,它就会使用该代码再次调用授权端点,并且处理授权端点的方法会验证代码并在成功时返回 SignInResult。但是,我在返回 SignInResult 的 SignIn(principle, properties, schema) 方法中收到 500 错误。

首先,我想知道我是否做对了,其次,如果我做对了,我做错了什么?请在下面找到我的相关代码:

授权提供者:

授权方式:

客户端方法:

0 投票
1 回答
818 浏览

asp.net-core - 使用 TestServer 托管 ASOS

我有一个OpenIdDict基于AspNet.Security.OpenIdConnect.Server. 设置按预期工作。

现在做一些流程集成;跨越整个后端架构的系统测试,我使用这个TestServer类。

为什么我这样测试是另一个问题

  • 以最少的工作量获得最多的测试代码覆盖率
  • 已决定不进行单元测试......(他们说工作太多)
  • 真正的集成测试,它跨越的代码少得多,当我想要获得良好的覆盖率时,这些测试也被视为很多工作
  • 该测试基于使用域语言方法构建的框架,这意味着我可以为我们当前的 web api 测试、selenium web ui 测试、selenium 负载测试和 wpf ui 测试描述相同的功能。

当我调用资源服务器的 Web api 端点时,授权想要加载http://localhost/.well-known/openid-configuration但失败。

{“IDX10803:无法从以下位置获取配置:' http://localhost/.well-known/openid-configuration '。”})

这是我用于测试环境的 OpenIdConnectSettings:

  • AllowInsecureHttp = true,
  • RequireHttpsMetadata = false

我可以让服务器发出配置还是以其他方式提供配置?

0 投票
1 回答
1231 浏览

c# - 使用开放 id 连接服务器检索 asp.net 核心中的声明

我即将在我的 asp.net 核心应用程序中实现基于承载的身份验证。来自 .NET Framework,核心内容对我来说仍然很新。从服务器获取令牌已经很好用了。但是我如何在以下请求中确定用户是否经过身份验证?在 .NET Framework 项目中,我曾经使用

但是,这会返回一个带有空声明或默认声明的标识。这是我到目前为止的设置:

我从OpenIdConnect.Server框架和他们的入门部分中的示例代码开始。这很好用,我的客户收到了不记名令牌。我已经Startup.cs通过以下方式构建了它:

在客户端,我将检索到的令牌用于进一步的请求

Bearer Token 在报头中传输。

现在,我现在如何访问当前登录的用户声明,或者我如何知道他/她是否经过身份验证?

我努力了

但这总是返回false,并且声明是一些默认值。我错过了什么吗?我需要安装一些额外的服务或中间件吗?

0 投票
1 回答
1000 浏览

asp.net-core - ASOS - 具有单独的授权服务器和资源服务器时,令牌验证不起作用

我正在尝试通过这篇文章使用 ASOS 来实现 OpenID Connect 服务器(资源所有者密码凭据授予)。当我在一个应用程序中同时拥有授权服务器和资源服务器时,一切正常。但是当我将它们拆分到两个应用程序(但在一台机器上)时,资源服务器无法验证令牌并返回The access token is not valid

我下载了源代码AspNet.Security.OAuth.Validation来调查这个问题,它返回null 这里

以下是来自授权服务器的一些日志:

以下是来自资源服务器的一些日志:

1)我的资源服务器出了什么问题?

2)如何在不同的机器上配置资源服务器(尤其是令牌签名/检查和加密/解密)?

0 投票
1 回答
314 浏览

asp.net-core - 使用 ASOS 访问令牌中的自定义用户数据

我正在尝试使用AspNet.Security.OpenIdConnect.Server.

是否可以在授权服务器上发布令牌时将一些自定义用户数据放置到访问令牌中,然后在令牌验证和请求处理期间在资源服务器上检索它?

示例:我想向访问令牌写入用户用来获取令牌的 IP 地址。然后在资源服务器上,我想在令牌验证期间比较当前用户 IP 地址和来自令牌的 IP 地址。

另一个例子:我想将用户的角色写入令牌,然后在 WebApi 操作过滤器或操作本身中检索它们

0 投票
1 回答
1325 浏览

oauth - .NET Core OpenId Connect Server:跨多个应用程序共享相同的令牌

我有两个用 .NET Core 编写并针对 4.6.1 的 api:

  1. myAuthApi (http://localhost:8496):验证凭据并向客户端颁发令牌。它还有一个端点 /api/values/1 (在此操作上有一个 Authorize 属性,用于验证令牌)
  2. myPublicApi(http://localhost:8497):在 /api/values/1 上从客户端接收令牌(此操作具有 Authorize 属性,也用于验证令牌)。myPublicApi 没有任何令牌端点,旨在成为资源服务器。

我正在使用 AspNet.Security.OpenIdConnect.Server 1.0.0。两个 API 都是 Service.Fabric 无状态服务

我可以成功获取到 http://localhost:8496/connect/token 请求格式如下的token

根据 myAuthApi (http://localhost:8496/api/values/1) 验证令牌时,它可以工作。但是,当对 myPublicApi(http://localhost:8497/api/values/1) 使用相同的令牌时,它不会。

在这两个 API 中,在 Startup.cs 中,我有

在 myPublicApi 我有:

在 myAuthApi 我有:

如您所见,我的数据保护提供商将密钥存储在 Redis 中,并且我使用在 2 个应用程序之间共享的证书来保护密钥。资源服务器没有配置任何身份验证提供程序,并且在启动时没有 UseOpenIdConnectServer。在 asp.net Web API 2 中,过去使用共享机器密钥跨应用程序管理令牌解密。

如何使用 oAuthValidation 在所有其他应用程序中成功验证 myAuthApi 颁发的令牌?

编辑,可以在这里看到一些日志: https ://pastebin.com/ACDz1fam

EDIT2:彻底阅读日志后,我看到令牌的解除保护使用的是相同的数据保护提供程序,但目的不同:

为了解决这个问题,@PinpointTownes 建议像这样设置数据保护提供程序:

0 投票
1 回答
855 浏览

openid-connect - 内省时的 AspNet.Security.OAuth.Extensions 错误

我正在用 asp.net core 2.0、AspNet.Security.OpenIdConnect.Server 和 AspNet.Security.OAuth.Extensions 编写一个测试应用程序。我遇到了访问令牌自省的问题。当我从 /connect/token 获取令牌并将其发送到我的资源服务器时,我的服务器中出现以下错误:

在我的资源服务器中:

这是我的资源服务器 (WebApi) 的 Startup 类中的 ConfigureServices 方法:

这是我在资源服务器中受 AuthorizeAttribute 控制器保护:

这是身份验证服务器中的启动类:

在我看来,我在配置服务器和客户端时遗漏了一些东西,但我不明白在哪里。或者,也许我只是做错了什么。也许,我应该自己实现自省方法……不知道(我已经尝试覆盖 OpenIdServerConnectProvider 中的方法,但最终什么也没发生。

请告诉我可能是什么问题或我做错了什么。谢谢。

UPD:在所有修复之后,感谢 Pinpoint,这是我的工作解决方案: https ://github.com/mstya/Introspection.Sample 我希望它对某人有所帮助。

0 投票
1 回答
480 浏览

aspnet-contrib - 回调路径实现

我正在尝试使用各种示例来编写自己的示例,但我并不完全理解正在发生的事情。也许有人可以提供一些见解。

我以为我需要实现一些 URL 来监听来自 3rd 方身份验证请求的回调,但是当我查看 github 实现时,例如,我看到

我没有看到任何在听的东西。

0 投票
0 回答
132 浏览

asp.net - 用户身份信息

我一直在通过复制 GitHub 示例来创建自己的 AspNet.Security.OAuthProviders 实现。有几个问题..

首先,我成功进行了身份验证,但是当我回来时,我的 User.Identity.Name 是空的。我没有看到我的提供商返回的信息。我想象的菜鸟问题,但我必须明确要求我想要回来的信息吗?如果是这样,我怎么知道要什么..我有点盲目地工作。

其次,在 Handler 的 GitHub 示例中,CreateTicketAsync 立即调用 UserInformationEndpoint。在我的用例中,在获得授权后,我想转到一个页面,该页面包含一些指向某些 api 请求的链接,这些请求将使用获得的授权,而不是立即执行。我不确定是否有这样的例子,或者我做出了不正确的假设并以错误的方式解决了这个问题。

这完全应该是为了演示目的,作为其他开发人员的“操作方法”,所以我想确保我以正确的方式做事。