问题标签 [identitymodel]
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.
identityserver4 - IdentityServer4 - DiscoveryDocument 上的子域
这就是我的情况。
身份:https ://mydomain.subdomain.com.br/homol/identity
当访问端点https://mydomain.subdomain.com.br/homol/identity/.well-known/openid-configuration这是我的回应
两个问题:
1 - 为什么子域被删除?
2 - 当用户访问 SPA 应用程序,然后 oidc 客户端将他(使用 siginRedirect 方法)重定向到登录时,找不到端点,因为子域再次被删除。
谢谢。
c# - 无法加载类型“IdentityModel.Client.DiscoveryClient”
我尝试使用来自身份服务器的访问令牌授权的方法向 API 发出请求,但是当我使用 Header 中的承载令牌发送请求时,我的请求失败并且结果将我标记为此错误:
无法从程序集“IdentityModel,Version=4.0.0.0,Culture=neutral,PublicKeyToken=e7877f4675df049f”加载类型“IdentityModel.Client.DiscoveryClient”。在 IdentityServer4.AccessTokenValidation.IdentityServerAuthenticationOptions.ConfigureJwtBearer
c# - 使用 IdentityModel.AspNetCore -1.0.0-rc.4.1 时获得 401 未授权
我正在尝试使用我的 asp.net core 3.1 应用程序中的客户端凭据流访问受保护的 api 之一。
对于我正在使用的令牌管理IdentityModel.AspNetCore -1.0.0-rc.4.1
。
在尝试访问受保护的 api 服务时,我总是收到 401。
ApiService 代码,
我在这里打电话
上面的代码是否设置了任何令牌,我在这里缺少什么?在授权标头中放置承载令牌的位置。
谢谢!
vb.net - 在 VB.NET 中使用 IdentityModel 进行 OpenID Connect 身份验证
我正在使用 Visual Studio 2019 在 VB.NET 4.7.2 中创建一个应用程序。用户必须使用 OpenID Connect 对自己进行身份验证。
我已经使用 NuGet 包管理器下载了 IdentityModel 包,并尝试编写身份验证方法。
第一步之前:导入库
第一步:令牌请求数据
第二步:为令牌请求调用异步函数。我必须使用异步函数,因为函数 RequestTokenAsync 的响应具有 Task(Of TokenResponse) 作为类型。我的问题是:这是正确的方法吗?我如何调用异步。函数,以便可以在调用函数中评估返回变量响应?
异步函数:不起作用并给出错误 NullReferenceException
异步函数将变量响应返回给函数 Get_Token 并进一步评估该变量:
第三步:响应评估 即使异步函数有“返回响应”以将变量响应返回给调用函数,但调用函数无法识别响应,我怎样才能正确返回变量响应?
你能帮助我,或者告诉我任何方向吗?
c# - 使用带有 .AddClientAccessTokenHandler() 扩展名的 HttpClient 时,不包括角色声明
我正在使用IdentityModel.AspNetCore
和.AddClientAccessTokenHandler()
扩展来自HttpClient
动向 API 提供访问令牌(至少我理解我可以使用它)。一些 API 端点是基于角色授权的。但是由于某种原因,添加到请求中的访问令牌不包含角色声明。如果我不使用.AddClientAccessTokenHandler()
并手动检索令牌并使用它进行设置,SetBearerToken(accessTone)
那么我可以到达我的角色授权端点。
我的启动是:
WebApi 调用:
身份服务器配置:
出于测试目的,我从 Program.cs 手动添加用户
因此,如果我使用手动访问令牌检索并将其自己添加到 HttpClient 标头中,则会到达我的端点并返回预期的响应。如果我使用.AddClientAccessTokenHandler()
,我会得到 403 - Forbidden。我错过了什么?
c# - AddOpenIdConnect 与手动配置 - SecurityTokenSignatureKeyNotFoundException
现有系统
我们正在使用 Identity Server 4 为 Google、Azure 或其他外部提供商提供单点登录功能,没有任何问题。我们所要做的就是添加客户详细信息和授权网址或迪斯科网址(例如.well-known/openid-configuration
),一切都按预期工作。
设想
我们的一位外部身份提供者表示,他们无法提供公共发现文档 url,他们仅在内部将其设为私有。然后他们作为 Json 文件提供(其中包含该 url 提供的确切 json 文本)。因此,我们尝试使用该 json 文件中的值来手动设置所有这些端点 url 和AddOpenIdConnect
设置OpenIdConnectConfiguration
。
它正确地重定向到授权请求的外部提供者,我们可以在外部系统中登录。但是当请求返回到我们的 Idsrv4 时,它无法验证id_token
. 我们得到SecurityTokenSignatureKeyNotFoundException
. 我们确实尝试设置JwksUri
但是,仍然没有运气。
我设法通过使用 Demo Identity 服务器复制了相同的行为,请参阅以下内容:
我们得到的错误是
我试图检查 jwksUri:https ://demo.identityserver.io/.well-known/openid-configuration/jwks ,我可以在那里看到正确的孩子 '3BA75FA392E4DAFAC2737B5B4644AA85'。
因此,在我看来,如果我们手动设置配置,Idsrv4 就无法正确加载这些密钥。
有一些建议通过使用ConfigurationManager
如下手动加载 SigningKeys:
但是,由于我们无权访问该端点 url,因此它对我们不起作用。
无论如何强制 Idsrv 从 jwksUri 加载密钥或手动提供密钥?
您能否建议解决此签名密钥异常?
asp.net-mvc - IdentityModel vs Microsoft.IdentityModel vs System.IdentityModel
我正在使用 OWIN 在经典 ASP.net MVC 应用程序中实现 OIDC/OAuth 身份验证和授权。对于微软的 OIDC 中间件不支持的 API 调用,看来我是有一些选择的。
- 我可以直接向 IdP 制作并提出休息请求。
- 我可以使用 System.IdentityModel 中包含的类。
- 我可以使用 Microsoft.IdentityModel 中包含的类。
- 我可以安装和使用由 Dominick Baier 和 Brock Allen 构建的 IdentityModel
也可能有其他选择。其中,Dominick 和 Brock 的 IdentityModel 似乎是最成熟、最先进和最完整的。
鉴于我正在使用带有 OWIN 的经典 ASP.net MVC,我应该更喜欢一种方法还是需要结合使用上述方法?我会在哪里使用一个而不是另一个?会有什么好处和坏处?
我知道有一些较早的帖子将 System.IdentityModel 与 Microsoft.IdentityModel 进行比较,但我对 2020 年最好的东西更感兴趣。:-)
标记
c# - 如何使用 ClientAssertion 定义 AuthorizationCodeTokenRequest
我试图弄清楚如何使用 IdentityModole framwork 为 JWT 场景的代码流定义我的 AuthorizationCodeTokenRequest
假设我的 OP 服务器上有一个已定义的客户端
在客户端,我想使用JWT获取 AuthorizationCode
我得到“invalid_client”,所以很明显我使用的 SigningCredentials 不正确,无法在任何地方找到工作代码示例。
authentication - 了解和使用 Microsoft 标识
背景:作为创办我的软件公司的一部分,我正在开发我的第一个企业软件解决方案。我正在.NET Core 上开发。
我一直在阅读有关身份验证与授权、AzureAD、托管身份服务器等的所有 Microsoft 文档。
我正在努力理解在 OAuth 2.0 的现代环境中围绕用户的一些更大的设计理念和策略,其中另一个服务对用户进行身份验证并发回声明。
当前状态:目前,我可以通过 Microsoft 帐户使用 Blazor 和 AzureAD 登录。当用户登录时,我会HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier)
在请求中使用他们的用户标识符,这可能有其他声明,例如他们的姓名或电子邮件。因为我没有使用用户数据存储在本地数据库中的身份托管。
有关与 Microsoft Identity / AzureAD 交互的问题
- 如果我希望在用户登录后执行代码,使用他们的登录数据,应该怎么做?一个示例用例:用户有一个与其帐户关联的“主题”。他们登录,我希望在登录后运行将主题应用到 DOM 中的代码
- 用户数据建模?由于用户使用另一个说“是的,此人已通过身份验证”的服务进行身份验证,因此我的服务基本上没有关于他们的信息。我想存储与
NameIdentifier
我从身份验证服务返回的相关信息,以便我可以为这个人建立一个“个人资料”。一个用例是:
Taylor White 登录 Enterprise News Service Inc.。他对一篇文章发表评论,评论以
string UserId
和 保存string CommentContent
。但是,当有人阅读那篇文章时,我想提取有关 Taylor 的信息,例如他的姓名和照片,但我目前没有任何数据库对用户进行建模或存储我从身份提供者那里获得的声明。
简而言之,关于这些场景,我缺少什么?
- 成功登录后执行一些逻辑
- 存储来自身份提供者的用户数据并在其他上下文中访问它的最佳实践,例如加载来自不同用户的评论。
附加信息:
- 我将 Blazor WebAssembly 用于我的前端,它也在 .NET 上运行。
- 我正在使用 .NET Core 后端。