问题标签 [thinktecture-ident-model]
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# - 如何模拟 owin 的授权管理器来测试我的 api 控制器
我在我的 WebApi 中使用ThinkTecture 的基于资源的授权。
我正在尝试测试我需要检查函数内部访问权限的控制器之一。但是现在,我不能再测试这个函数了,因为我不能模拟一个扩展方法,因为它是一个 nuget 方法,我不能修改这个类来注入另一个值。
我的控制器如下所示:
ResourceAuthorizationManager 像这样设置到启动中:
ThinkTecture 项目的源代码在这里。
谢谢您的帮助
oauth - 桥接表单身份验证和 OAUTH
修改表单身份验证登录过程并不难,因此除了正常的表单身份验证之外,WebClient 对象对使用 Thinktecture IdentityModel 设置的 Web Api DAL 提供的 api/token url 进行基本身份验证。然后可以将返回的会话令牌存储在会话字典中,以供以后调用 DAL 时使用。
问题是这些代币有不同的寿命。
我可以重写应用程序以将凭据保存在 localStorage 中,以便根据需要重新创建会话令牌,但这很丑陋,从安全角度来看并不理想。
可能有一些方法可以为这些系统中的一个或两个配置令牌持久性,但我不知道要使用什么搜索词(我尝试搜索令牌持久性和令牌寿命,但结果没有帮助)。
我对如何最好地协调这两种网络应用程序安全性的哲学和实用建议都很感兴趣。如果还没有关于这个主题的答案,我会感到非常惊讶,只要我知道要搜索什么。
一点背景,因为有些人不清楚我在问什么。
有一个大而丑的老式 ASP.NET Web 应用程序,它使用基于表单的安全性
我刚刚添加了新的东西作为使用 Thinktecture IdentityModel 的单独 DAL 应用程序。此 DAL 由两个应用程序使用,即 ASP.NET 应用程序和 Durandal SPA。
它们使用相同的数据库进行凭证检查,因此它们具有相同的身份空间。
我已经修改了旧应用程序的登录过程,以便它还向 Thinktecture IdentityModel 提供凭据并从其获取会话令牌。每当旧应用调用 DAL 时,此令牌就会被放入 Session 集合中。
如果您启动旧应用程序、进行身份验证、执行操作并关闭浏览器,然后重新打开浏览器,您将拥有一个已登录的 ASP.NET 应用程序而没有发生登录,因此没有机会创建会话令牌。这就是问题。我需要这两个令牌具有相同的生命周期。
我想到了一种可能的方法。我将其作为答案呈现在下面,以便人们可以就其优点发表意见或提出改进建议意见。如果我想到任何其他想法,我会把它们作为答案提出来,我希望你也会这样做。
oauth-2.0 - 如何从 IdenityServer 请求 ActAsToken,在 WebApi 中持有 OAuth2 JWT 不记名令牌?
我们正在尝试扩展我们当前的基础架构,以便能够将 WebApi/OAuth2 用于我们的移动应用程序。目前我们一直在为移动应用程序使用 SAML 令牌,但它太重了。我希望这里有人可以指出正确的方向,为我们已经 WIF 保护的 WCF 服务获取和 ActAsToken ......我们已经到了一个点,我们已经将 AuthorizationServer 从 ThinkTecture 导入到我们的解决方案中,我们现在持有一个完全合法的 JWT 令牌,我们在调用 WebApi 的 codeExample 中使用该令牌。我们已经对受保护的 WebApi 项目进行了第一次调用,我们可以从 WebApi 中访问 ClaimsPrincipal 上的声明。
到目前为止,一切都很好......我已经看到了多个关于如何进入受保护的 WebApi 的示例,并且我已经使用 OAuth2 成功地做到了这一点。但是现在我需要从 WebApi 到受 WIF 保护的中间层 WCF 服务,使用 SAML 令牌(我们仍然希望将 SAML 令牌用于 WCF 服务,我们已经通过获取速度提高了OAuth2 refresh_tokens/access tokens 进入我们的移动设备)。
我想知道我们将如何从这里开始,对我们的 StandardTokenService 进行主动登录以获取 SAML ActAs-token,以便 WebApi 可以调用受 SAML 令牌保护的中间层 WCF 服务。我在这里找到了关于这个问题的类似帖子;身份委托法案与 JsonWebToken但到目前为止仍未得到答复。上面的这篇文章与我们的设置类似——我们需要从我们的 IDP 中获取一个委托令牌(ActAs),从我们在 WebApi 项目中持有的 JWT OAuth2 令牌中获取。
我错过了什么吗?我想从受保护的 WebApi 中获取 ActAs 令牌,以便能够调用中间层中的所有 WCF 服务,这些服务已经使用 SAML 令牌受到 WIF 的保护。我们希望移动设备包含 JWT 刷新令牌/访问令牌以加快速度(而不是吹牛的 saml 令牌),但随后我们需要获取 ActAs 令牌,从 WebApi 调用以便能够与 WCF 服务进行通信中间层。理想的解决方案是能够创建一个 RequestSecurityToken (RST),其中包含从 JWT 填充的足够信息,以便能够发出合法的 ActAs 令牌(在我们从 SAML bootstraptoken 填充 RequestSecurityToken (RST) 之前)供 WebApi 使用.
亲切的问候,
asp.net-mvc - 使用 HttpSessionState 存储 Token/Claims
是否有可用于使用 HttpSessionState 存储 Token 的解决方案?
我知道我们可以启用会话以使身份验证 cookie 更小:
据我了解,使用默认实现,令牌存储在内存中。http://www.cloudidentity.com/blog/2010/05/26/YOUR-FEDAUTH-COOKIES-ON-A-DIET-ISSESSIONMODE-TRUE/
即使设置了自定义提供程序,也不会使用 HttpSession。
Thinktecture IdentityModel 允许我们通过实现ITokenCacheRepository
来使用自定义令牌存储库,但它需要外部存储,使用会话可能不好(过期,范围......)。
为什么默认 TokenCache 使用内存解决方案而不是 Host Session 提供程序?有没有一种简单安全的方式来使用主机的会话状态?
oauth - 无法从 Thinktecture 授权服务器获取令牌
我无法从 Thinktecture 授权服务器获取访问令牌。成功获得授权代码后,我尝试向令牌端点发出 POST 请求,但始终收到 400 Bad Request 并带有以下响应: message: "{ "error": "invalid_client" }"
我的请求是: POST 到https://host/authz/users/oauth/token 请求正文: {"code":"grant_code_received_from_previous_request","client_id":"myclient","grant_type":"authorization_code","client_secret" :“我的秘密”}
我的客户端已在授权服务器中正确设置。我的客户 ID 和密码正确;它们与我在上一个请求(/users/oauth/authorize)中用于授权代码的值相同。
对这个“invalid_client”问题有任何想法吗?除了“invalid_client”之外,响应中没有其他信息。
asp.net - 在 POST 中将参数 SecurityToken 传递给不同的 asp.net mvc 网站无法允许单点登录
我有几个网站 A、B、C ..... 网站 A:是一个认证网站,取决于用户名、密码和一个额外的参数;网站 A 将成功的用户登录重定向到网站 B。当用户登录时,我在网站 A 中获得了一个派生自 System.IdentityModel.Tokens.SecurityToken 的令牌。我的第一种方法是尝试通过 POST 请求将该令牌传递给另一个网站,但由于令牌太大而没有成功。首先我认为它是可序列化的,但不是:GenericXmlSecurityToken 可以使用 ToTokenXmlString() 转换为 XML。这是Thinktecture.IdentityModel.Extensions上的一个扩展方法,下面我附上类的描述
如您所见,我们可以将 XML 转换为字符串,但上述方法中没有一个采用该字符串并返回一个 SecurityToken,而是采用 GenericXmlSecurityToken。该类的构造函数在这里并且依赖于多个参数。
问题:
- 我是否需要在我的 webconfigs 中添加一些东西才能在
没有 POST 的情况下实现这一点? - 我可以序列化 SecurityToken 并将其发布到网站 B 并使用所有原始值再次反序列化它(这是这种情况下的方法)。
asp.net - 自定义 WebApi 授权数据库调用
我正在尝试确定我编写的自定义授权属性是否真的是一个好主意。
场景
假设我们有一系列商店,每个商店Store
都有一个所有者。只有商店的所有者才能对商店进行 CRUD 操作。除了具有Claim
基本上覆盖所有权要求并表示他们可以在任何商店进行 CRUD 操作的用户。
旁注:我正在使用 Thinktecture 和 ADFS
所以我做了一个StoreOwnerAuthorize
属性,它的参数("Manage", "Stores")
用于检查用户是否有适当的声明来“覆盖”不是所有者但仍然能够通过授权检查。
我不确定我对拥有像“ManageStores”这样的声明并在属性内进行数据库调用有何感受。它让我觉得我走错了路,即使它确实完成了我所需要的。
API 路由
API方法
StoreOwnerAuthorizeAttribute
single-sign-on - 为 IdentitiyServer3 使用自己的用户存储库/数据库表进行身份验证
您能否帮助我了解如何使用我自己的用户存储库/数据库表进行身份服务器(IdentityServer3)进行身份验证?我知道其他人已经做到了,但似乎无法弄清楚如何?
thinktecture-ident-server - 在 MVC 中使用 Identity Server V3 的 customuserservice 示例无法重定向到登录页面
我正在使用身份服务器 v3 的 CustomUserService 示例。我添加了家庭控制器,如下所示 - `public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); }
并添加了 2 个视图 About.cshtml 和 Index.cshtml。如您所见,关于操作具有 Authorize 属性。因此,当我导航到 About 时,我应该被重定向到 Identity Server V3 的登录页面,但事实并非如此。我完整的startup.cs如下 -
我正在使用 CustomerUserService 示例,因为我想使用 WSfederation。因此 ADFS 将向身份服务器提供声明,然后身份服务器应将这些声明返回到关于视图。有人能帮我一下吗。
c# - 使用 Thinktecture.IdentityModel lib 使用 UseBasicAuthentication 和 Webapi 和 OWIN 我的控制器中的身份没有声明
我正在使用 Thinktecture.IdentityModel 并尝试将 Owin.BasicAuthentication 库与 UseBasicAuthentication 与 Webapi 和 OWIN 一起使用。我的控制器中的身份没有声明,并且显示未经过身份验证。
我在 Startup.Auth.cs 中设置了 owin 配置
索赔按预期从会员重启中返回。
但是当我在我的控制器方法中查看它时,没有任何声明,它说没有经过身份验证..
我错过了什么?