问题标签 [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.
azure - SSO 向社交登录添加声明 (SAML WS-Fed)
我试图了解 SSO 概念以及它们如何适合我的情况,但我已经到了有点卡住的地步。假设我们使用 Azure AD、Ping Identity 或类似的东西,我们希望启用社交登录(谷歌帐户/facebook 等)——这一切都很好。我一直坚持的一点是,我如何控制附加到该身份的声明?
流程(在我的脑海中)概述: - 用户使用 google(facebook 等)帐户登录,他们将 google 帐户与他们的“旧”帐户相关联(即,将他们的社交登录与其内部标识符链接起来,我们作为企业将他们识别为)这个过程是什么,对于这个讨论并不重要(我不认为)。
现在,当用户使用他们的社交帐户登录时,我如何执行该映射到他们的内部标识符的查找以将其添加为声明,并根据我的组织知道的关于他们的信息为该用户添加相关的其他声明(例如如果他们超过 21 岁,他们是什么成员的“级别”等)。
我知道,如果我们有一个使用 SSO 的 RP,它作为 RP 可以执行此逻辑,但是我们有几个内部(并且可能是外部管理的)系统(目前是 4-5 个)我们想使用 SSO 捆绑在一起- 这将依赖这些声明进行访问/个性化等。
我所看到的最接近这一点的是 RP-STS 的概念——根据我可以解决的问题,它可以有效地坐在 Ping / AZ AD 前面以形成链的一部分,因此它可以进行内部查找并添加必要时的附加声明——这作为一个概念有意义吗?这是正确的方法吗?
我敢肯定这不会不常见 - 但我似乎找不到任何关于我们需要的完全集成的好的示例/文档(很多关于 AZ AD / Ping 等)。必须有现成的产品可以做到这一点?(如果可能,我们真的不想要自定义 SSO 实现/组件)
c# - 在 MVC 5 中访问控制器中的声明值
我在我的应用程序中使用了 OWIN 身份验证。
登录操作
我想通过不同的操作访问用户名和用户 ID。如何访问声明中添加的值?
更新 我试过
我可以在快速窗口中查看值。但即使我无法访问该值。如何获得价值?
claims-based-identity - 如何从 AD 中的特定位置发送 AD 组作为 ADFS 中的角色声明
我希望我的 ADFS 2012 R2 从 Active Directory 中的特定位置发送组成员资格,我该怎么做?
我尝试了“将 LDAP 属性作为声明发送”,令牌组 - 不合格名称 => 组,但这给了我用户所属的每个组。我只想要位于 AD 中某个路径的组(例如 org/department/applications/demoapplication)
authentication - 如何在 NancyFX 中定义对丢失声明的响应?
我有一个模块旨在使管理员能够管理用户。当然,这个模块不仅需要认证,还需要特定的声明。我发现,如果您遗漏了相关索赔,您实际上只会得到一个空白页作为对您请求的响应。这并不理想。
我该如何改变呢?
下面的模块代码(如果有人需要看)...
permissions - 创建自定义声明类型的最佳实践
给定一组特定的权限,例如 EditPage、CreateProject、ModifyUser,我目前正在研究两种不同的方法来创建一些自定义声明类型来模拟这种行为。我在网上几乎找不到关于最佳方法的信息,并希望对您在自己的系统中如何做到这一点提供一些反馈。
我考虑的第一种方法是使用“action”声明类型,具体操作由声明的值指定:
第二种方法是使用声明类型本身来定义正在执行的操作,不使用该值。这就像“PossessProperty”安全风格,只要用户拥有声明类型,他们就可以执行操作。
另请注意,在上面的声明类型中,我包含了一个“项目”鉴别器,以便我可以区分可以在项目 A 中编辑页面但不能在项目 B 中编辑页面的用户。
我们还计划将所有这些自定义声明存储在中央“授权”数据库中,因此需要唯一性。
任何想法或反馈将不胜感激。
entity-framework - ASP.NET Identity 不加载任何声明
我有一个 ASP MVC 5 站点,它使用新的身份框架和使用实体框架的 3rd 方身份验证,因为它开箱即用。我有一个登录用户,他们有 3 个声明(标准名称 nameidentifier 和身份验证提供程序似乎由默认 ClaimsIdentityFactory 提供)。
当用户执行某些操作时,我会使用以下方法为他们添加声明:
如果我查看 AspNetUserClaims 表中的数据库,那么我会看到新声明的一行。伟大的。
但是,当我的用户随后访问其他页面时,我会检查这个新声明,但我从未找到它。
我最初的问题是,登录的用户从未更新过他们的 cookie 以包含新的声明,所以我将他们注销,认为当他们重新登录框架时会读取声明并为用户创建新的声明,并且然后他们就会在 cookie 中。但是我必须遗漏一些东西,因为即使我的用户再次登录他们也没有声明。
事实上,如果我在 ExternalLoginCallback 中调用此行时记录数据库活动:
我得到的是:
它根本不包含任何尝试查询数据库的声明,实际上我返回的用户有 0 个声明。
然后代码继续执行此操作:
然后身份有 3 个声明。
当我加载我的用户时,我必须做什么才能从数据库加载声明?一旦我这样做了,我需要做什么来确保我的用户在使用网站期间产生的任何新声明都在用户 cookie 中更新?
我觉得我必须在这里遗漏一些基本的东西。
编辑
所以我玩得更多,最终实现了我自己的ClaimsIdentityFactory
:
这现在显式地查询数据库以加载用户声明。我必须向我的类中添加一个属性,IdentityDbContext
以便我可以公开框架 IdentityUserClaim 对象:
现在,当我查看我的 currentClaims 时,它们确实正确包含表中的声明。欢呼!
除非我随后打电话:
它还加载了我以前不会加载的声明。
事实上,如果我改成这样:
然后,当我第一次创建 claimIdentity 时,我没有加载数据库中的声明(其中有 3 个),但是在我手动查询数据库后第二次创建身份时,声明就在那里。
为什么会这样?我现在感觉就像它的 EF 相关但不知道为什么......
claims-based-identity - 声明和 SAML2 混淆
我的理解是,声明是基于 WS-trust 标准的 STS 事物,与 SAML2 标准无关。WS-trust STS 令牌可以使用 SAML 以该格式发送声明。我对么?
c# - Thread.CurrentPrincipal 被重置为默认的 GenericPrincipal
在初始化我的应用程序期间,我设置了System.Threading.Thread.CurrentPrincial
. 但是在应用程序初始化并且我想访问这个 Principal 之后,CurrentPrincipal 再次包含默认的 GenericPrincipal。
有人知道我为什么会出现这种行为吗?以及如何在应用程序初始化后设置 Principal 以访问它。
以下示例演示了该行为:
MainWindow.xaml:
MainWindow.xaml.cs:
在我的真实项目中,我Thread.CurrentPrincipal
在 Bootstrapper 中设置了属性。
mdx - 损失发展三角形 - 是否有 MDX 查询可以将其构建到多维数据集中?
背景 在保险业中,损失发展三角形分解了一致发展期间的累积成本(即:为索赔支付的美元)。目的是帮助您了解索赔成本在成本发展的同一时期的逐年进展情况。
例如,如果我有 2008 年发生的索赔和 2009 年发生的索赔,三角形将有助于查看两组索赔在 12 个月后的累积成本,然后是 24 个月,依此类推。
三角形看起来像这样。
http://www.reserveprism.com/images/reportCountTriangle.jpg
问题 我的问题是,是否存在 MDX 查询来创建它,或者甚至可能在 OLAP 多维数据集的框架内?(我在谷歌上找不到任何东西,这很令人惊讶,因为这是一个标准的保险功能)。