问题标签 [claims]
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.
c# - 设置 ClaimTypes.Name 不会产生 identity.name
我正在玩 .net 4.5 中的声明授权。这工作得很好。但我有一个希望是小问题。
我认为设置名称声明类型应该产生一个身份名称
我检查了 ident.NameClaimType 与 ClaimTypes.Name 具有相同的值两者都是http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
我设置了新的声明。我可以看到这是身份声明的一部分。但 Identity.Name 仍然是空的。
我究竟做错了什么?
.net - ClaimsAuthorize 动作和资源之间的关系
使用ClaimsAuthorizeAttribute
(.net4.5)我可以定义所需的资源和操作,如下所示:
我还可以添加多个属性以获得更精细的权限
但在CheckAccess
方法中,我有两个单独的集合,它们没有任何关系。
所以我知道有“查看”和“编辑”,另一边是“个人”和“设置”
但是不知道是不是这个意思
“查看人员”或“查看设置”也不
“编辑人员”或“编辑设置”
如何处理?
我是否以不应该的方式使用资源和操作?(.net 4.5)
asp.net - 限制 ADFS 2.0 使用特定 OU 而不是域级别访问
考虑以下示例场景:
- 我有一个用于生产、测试和开发的单一 Active Directory 域(每个域在 OU 级别分开)。
- 我想在测试 OU 级别安装 ADFS,并且我不希望在测试 OU ADFS 中经过身份验证的用户能够访问(读取和写入)其他 OU。
这可能吗?我们能否限制 ADFS 2.0 仅在特定 OU 下工作?
sharepoint-2010 - ADFS 2.0 声明转换
我有 Sharepoint,它使用 adfs 配置了基于声明的身份验证。ADFS 配置为使用第三方声明提供程序信任。因此,当用户访问共享点时,他会通过 adfs 重定向到第三方身份提供者登录页面。此身份提供者 (IdP) 将 saml2 令牌返回给 adfs,然后 adfs 将用户重定向到共享点。
问题是第三方 IdP 被配置为仅返回特定的 saml 属性(声明)。我需要配置 ADFS 以了解此特定属性。
自定义 saml 属性如下所示:
如何在 ADFS 中使用此声明,然后将其发送到共享点?
谢谢。
asp.net - 使用 ASP.NET 应用程序中的令牌访问 WCF 服务
我有以下情况
我有一个发行我的令牌的 STS,我用它来联合我的 ASP.NET 应用程序,这个应用程序调用 WCF 服务来执行一些需要的功能。
但是,当我检查 ASP.NET 应用程序中的 ClaimsPrinicipal.Current 时,我发现它与我用来访问 STS 的用户的声明是正确的。但是当我从 ASP.NET 应用程序调用服务并检查 ClaimsPricipal.Current 时,我发现它等于 null。
作为一种解决方法,我从 ASP.NET 应用程序传递了 ClaimsPricipal.Current,并将 Thread.CurrentPricipal 放在 WCF 服务中。
但是,我不认为这是一个正确的方法。
所以我的问题是:
1) 为什么 ASP.NET 声明主体不像 WCF 主体?2)使用访问令牌访问 WCF 服务的正确方法是什么?
sharepoint - SharePoint:如何使用 PowerShell 解决/搜索声明?
我有一个 SharePoint (2010) Web 应用程序,它设置了基于声明的身份验证,以及两个声明提供程序(Azure ACS 和 ADFS)。从 SP Central Admin -> Manage Web Applications -> User Policy -> Add Users,我可以在不同的身份提供者中搜索用户(我相信该控件称为“People Picker”)。
是否可以使用与 PowerShell 中的人员选择器类似的功能?
原则上,我需要的是这样的:
通过搜索添加到 SharePoint 的所有声明提供程序,这将返回“完全限定”用户名(包括声明前缀),例如 i:05.t|acs|alice.bob@gmail.com。
这可能吗?或者至少,是否可以枚举索赔提供者,并单独搜索每个(这也是可以接受的)?
single-sign-on - SAML IDP、ADFS 2.0 SP 和 WS-Fed 应用程序
更新:
我能够让 ADFS 将我的用户转发到依赖方应用程序。我使用了 ComponentSpace 的 SAML2.0 库和 RelayState。即使它成功转发到 WIF 应用程序,它也无法识别我的用户已通过身份验证。相反,它通过重定向到 IDP STS 来启动 SP 发起的 SSO 方案。我不太确定我应该如何进行。
原始信息:
我已按以下方式配置了单点登录设置:
IDP - 向我的 SP 发布 SAML2 响应的门户网站。
SP - ADFS 2.0 配置了声明提供程序信任配置为 SAML2.0 端点(当然是我的 IDP)
RP 应用程序 - 在 ADFS (WS-Fed) 中配置为信赖方信任的 ASP.NET 应用程序。
当我登录到我的 IDP 并单击将 SAML2 令牌发布到 ADFS 的链接时,一切正常。我被带到 IdpInitiatedSignOn.aspx 页面并被告知我已登录。问题是我通常希望看到一个可供选择的应用程序的下拉列表(应该只包括我的单个 RP 应用程序)我什么也看不见。我只有两个按钮允许我退出所有应用程序或单个应用程序。配置我不知道的 RP 应用程序信任是否有一些技巧?据我了解,ADFS 2.0 将接受 SAML2 和 WS-Fed 的这种配置。(参见“我什么时候可以使用 RelayState?”下的http://blogs.technet.com/b/askds/archive/2012/09/27/ad-fs-2-0-relaystate.aspx )
我将不胜感激对此的任何建议。
sharepoint - 使用声明对 SharePoint 网站上的 Powershell 脚本进行身份验证
我有以下问题:
我的团队使用 SharePoint 团队网站来交付我们的工作等。我们是 SharePoint 开发人员并编写了很多 powershell,但就本网站而言,我们只是用户,而不是管理员。我们编写了将文档上传到站点和从站点下载文档的脚本。这是我们所做的一个简单示例:
Get-Credential 函数会弹出用户名/密码对话框。这一直有效,直到站点的提供者将身份验证方法更改为声明。现在我们得到一个 403:
“远程服务器返回错误:(403) Forbidden。”
我已经在谷歌上搜索了一段时间,我得到了很多关于如何在 SharePoint Web 应用程序上设置声明身份验证的文章。但这都是管理员的东西,这对我没有用,因为我没有网站上的必要权限。我需要的是一个如何使用它的例子。如何使用来自 powershell 的声明进行身份验证。因为提供通过 Get-Credential 获得的凭据显然已经不够了。
附加信息:我使用的是正确的凭据,当我尝试通过浏览器手动登录该站点时它们会起作用。我也拥有我尝试访问的文件的完全权限。我们正在使用为 SharePoint 2010 开发的 Powershell 版本 2。我尝试对其进行身份验证的网站(很可能)也是 SharePoint 2010。先感谢您。
c# - 在 SharePoint 中检索友好名称作为声明用户
我将首先解释我要做什么。我有一个正在传入的声明标识符,例如0e.t|saml provider|first.last@domain.local
. 我想把它修剪成first.last@domain.local
.
我很清楚这可以通过简单的字符串格式化来完成,但是,这不是很灵活,所以如果传递了一些我没想到的东西,字符串格式化可能会失败。它更容易出现问题。
我想动态地执行此操作。这是我尝试过的。
尝试EnsureUser
使用上面的声明标识符,然后调用 SPUser.Name:
我尝试了以下字符串作为 in 的参数EnsureUser
,都导致异常:The user with the specified logonName cannot be found in Active Directory.
0e.t|saml provider|first.last@domain.local
saml provider|first.last@domain.local
first.last@domain.local
同样,所有这些都失败了。
我尝试的另一种方法,使用SPClaimProviderManager
(从这个博客中提取):
我想确保我正在尝试解码实际声明,而不是其他内容,所以我调用IsEncodedClaim
. 然而,这总是返回false
。
我的问题:
1)我在这里做错了什么导致这两种尝试都失败了?我需要做些什么不同的事情才能使它们正常运行?
2)有没有更好的方法来获得一个友好的声明用户名而不用字符串解析?
c# - System.Security.Claims.ClaimsPrincipal 未更新
我正在使用 BrockAllen.MembershipReboot
与索赔的确切更新时间有关的索赔处理存在问题。下面的代码应该证明我的问题......
我的问题是这样的:
有没有办法强制该System.Security.Claims.ClaimsPrincipal.Current.Claims.GetValue()
方法在发出 cookie 时更新它的声明?