问题标签 [duende-identity-server]

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 投票
3 回答
635 浏览

c# - 将 ASP.NET Core 5.0 IdentityServer4 升级到 6.0 错误 - 没有这样的表:键

将带有 IdentityServer4 的 ASP.NET Core 5.0 升级到 6.0 后出现错误 - 没有这样的表:键

我找不到任何关于 IdentityServer 从 .net 5 迁移到 6 的文档

编辑 当您将 ID4 从 .NET Core 5 升级到 6 时,它将成为 Duende Server。.NET 6 没有 ID4 ..

0 投票
2 回答
1075 浏览

asp.net-core - 我们可以从 github 获取 IdentityServer4 源代码并将其升级到 Net 6.0 并使用它吗?

IdentityServer4 是支持 .Net Core 3.1 的开源版本,我知道下一个版本不是开源的,需要许可证。

我们需要在 .Net 6 项目中使用 IdentityServer。

我们可以从 github 获取 IdentityServer4 源代码并将其升级到 Net 6.0 并使用它吗?有什么限制吗?

0 投票
1 回答
77 浏览

azure-active-directory - Blazor WASM AzureAD IdentityServer 导致 AADSTS90023:公共客户端无法发送客户端密码

我正在尝试在 Blazor WASM(Asp.Net 托管解决方案)中获取 IdentityServer 6 以使用 Microsoft id,但遇到错误消息“AADSTS90023:公共客户端无法发送客户端密码”。我觉得我已经尝试了所有我能想到的配置,但希望我仍然错过了一些东西。

IdentityServer 配置使用我认为适合我的场景的“SPA”配置文件:

}

配置代码遵循最简单的示例:

因为这些代码片段基本上是执行此操作的最简单方法,所以我假设我的 AzureAD 应用程序注册有问题,但我不知道是什么问题。我已经包含了清单:

不支持这种情况还是我做错了什么?

编辑:最终问题出在重定向 uri 平台上,该平台不应设置为“SPA”而是“Web”,因为它不是客户端进行身份验证,而是 IdentityServer Web 服务。相关部分是:

0 投票
0 回答
62 浏览

asp.net-mvc - 如何将 SAML 身份提供程序添加到 ASP.NET MVC 5 网站以用作我公司另一个 Web 应用程序的外部身份验证

我在 .NET 框架 4.7 上有一个遗留的单体 ASP.NET MVC 5 应用程序,我们的团队正在为我们的 webapp 领域构建一个新的更现代的应用程序,它使用 identityserver4 来完成用户的 openid/oauth 身份验证。

由于多种原因,目前共享单个 IDP 并更改旧版应用程序以将用户配置到中央共享位置是不切实际的。

有什么方法可以保持表单身份验证为我们的旧版 Web 应用程序提供动力并添加 SSO 身份提供程序(我认为这是正确的术语),以便可以将其配置为身份服务器中的外部身份验证提供程序,大致相同脸书和推特如何注册?

我一直在查看各种 SSO 包,并对术语和实际适用的地方感到困惑。我正在考虑使用侵入性最小的选项开始,用户仍将向旧系统进行身份验证,但允许新应用程序 IDP 触发对某些用户的旧应用程序身份提供者的身份验证作为选项。

这样的事情可能吗?

0 投票
0 回答
45 浏览

c# - 如何跳过 IdentityServer 的授权验证

我们的项目需要一个演示模式。如果开启该模式,所有接口的权限验证都会被跳过。我们已经跳过了 AuthorizationHandler 中的验证,但是 IdentityServer 仍然会验证请求头中的令牌。我们如何跳过验证,以便所有请求都可以匿名?

0 投票
0 回答
31 浏览

c# - 从环境变量签名凭据

我正在探索一个虚拟样本的身份服务器,并且我正在努力进行加密令牌签名。

我首选的方法是从环境变量(或appsettings.json所有重要的)中获取一些秘密字符串,我可以使用它们来签署令牌并稍后在 API 上验证签名。

我正在阅读我不能使用对称密钥,我需要一个非对称密钥对。

有没有关于如何为此目的使用字符串机密的示例?我对 .NET 中的密码学不是很熟悉

就像是

但是使用自定义值,我可以在设置或环境变量中硬编码或存储为字符串。

0 投票
1 回答
28 浏览

identityserver4 - 用户通过身份验证时调用的方法

我们正在为第 3 方客户端运行带有 SAML2 身份验证的 Duende IdentityServer4(最新的 IdentityServer4)。我想要完成的是:

  • 用户登录到我们的 IdentityServer。
  • 当用户跳转到第 3 方客户端时,用户被我们认证,用户名被发送给客户端。
  • 在发送用户名之前(在身份验证之后),我需要检查用户是否存在于客户端中。如果用户不存在,我将在经过身份验证的用户名发送回客户端之前创建它。

有没有办法做到这一点?

0 投票
1 回答
39 浏览

api - 如果给定用户名/密码,RestSharp 能否以编程方式从 IdentityServer/DuendeServer 为用户获取 oauth2 访问令牌?

我们的 UI 有 Duende 服务器,用户提供他们的用户名和密码并获取访问令牌,然后我们的 SPA 应用程序使用该访问令牌调用 api,并使用我们的身份服务器发出的访问令牌。

我处于需要从脚本调用相同 API 的情况,并且想知道如果提供某些信息(可能是通常输入到交互式网站的用户电子邮件/密码等),RestSharp 是否有能力获取访问令牌) ?

我看到 RestSharp 有一些与 OAuth 相关的“身份验证器”,但文档不清楚它们究竟实现了什么。我也没有看到它提到任何有关电子邮件地址和密码的内容。

我想知道是否有一个不同于我在其他地方生成 JWT 并将其直接提供给 restsharp 的选项。如果有一种编程方式可以直接从 IDP 生成令牌,我会很高兴。

0 投票
0 回答
116 浏览

c# - Blazor WASM .NET-6 角色身份验证对我不起作用

我的项目在 VS-2022 中并使用下面的标签。

有人可以解释一下下面的代码片段参考在 SERVER program.cs 文件中的含义吗?这个片段打算“做什么”?
具体来说,“名称”和“角色”指的是什么?我已经在 AspNetRoles 表以及 AspNetRoleClaims 和 AspNetUserClaims 中创建了四个角色。但是,以下 Blazor 页面条件不起作用:@attribute [Authorize(Roles = "Owner,Admin,Lead,User")]

我在需要此代码来获得角色授权工作的建议中找到了以下代码段。

使用时,我在包含以下内容的行上收到运行时错误“序列不包含元素”:options.ApiResources.Single().UserClaims.Add("name");

由于阅读了 .NET Core 3.1 和 .NET 5 在线教程以将我的项目纳入 .NET 6 和 WASM 托管,因此我不知道 program.cs 文件部分(以前称为 startup.cs)中需要什么。过去两年发生了很大变化,尤其是 Blazor 和 .NET 6。

我欢迎在我的项目中获得角色授权的问题、评论和解决方案。

0 投票
1 回答
36 浏览

c# - 从 Blazor WebAssembly 应用程序使用 gRpc Web 客户端时,Duende BFF Yarn 不传递令牌

我正在使用 ASP.NET Core 6 构建一个 Web 应用程序。
我有:

  1. Frontend.Client - 带有 UI 的 Blazor WebAssembly
  2. Frontend.Server - ASP.NET Core,托管 Blazor WebAssembly
  3. Web Api - 远程 REST 服务
  4. gRpc 服务- 远程 gRpc 服务
  5. Identity Provider - 一个使用 Duende.Bff.Yarp 的 Duende 项目

我的 Frontend.Client 配置为调用它自己的 BFF(Frontend.Server),而服务器使用Duende.Bff.YARP将调用转发到 REST 和 gRpc 服务。
对 REST 服务的调用按预期工作:客户端按照文档自动传递令牌。
我的问题是对 gRpc 的调用,它似乎没有使用正确的 HttpClient 和 AntiForgeryToken 和访问令牌。
我知道我在某处遗漏了一些设置,但我找不到任何关于如何将 Duende 与 gRpcWebClient 一起使用的示例。

我的Frontend.Client配置包含:

我的Frontend.Server配置包含:

用于读取配置的 appsettings.json 文件包含:

当我的客户端调用 gRpc 时,我收到 401 Unauthorized 响应和 Duende.Bff 日志表明 AntiForgery 检查未通过,实际上该请求没有带有 X-CSRF 1 的标头(而对 REST Api 的调用确实)。这表明 gRpc 客户端没有使用 Duende 使用的 HTTP 客户端。
如何将我的 gRpc 客户端连接到 Duende?

注意:在引入身份验证/授权位之前,我直接使用 YARP 并且对 gRpc 的调用工作正常。当我添加 Duende 时,它​​就坏了。