问题标签 [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.
asp.net-web-api - ASP.NET Web API 中基于角色的授权 - 如何在主体上设置角色?
我正在使用新出版的书ASP.NET Web Api 2 Recipes中的配方 10-3来支持我的 Web API 中的基本身份验证。此配方使用 Thinktecture 的 3rd 方库。从下面的代码中可以看出,我正在根据我自己的帐户服务对用户进行身份验证。
现在我想使用 Authorize 属性在我的控制器中进行基于角色的授权:
我的帐户服务显然知道用户及其分配的角色,但 Authorize 属性无法使用此信息(角色未在主体上设置)。
我该如何做到这一点?可以将 Thinktecture 身份验证处理程序配置为在主体上设置角色吗?或者我应该制作自己的自定义 Authorize 属性(从 Authorize 属性派生)?如果是这样,我是否应该覆盖 OnAuthorization 方法以使用我的帐户服务创建和设置主体?或者可能直接覆盖 IsAuthorized 方法?或者可能是别的什么...
asp.net - 缺少自己的上下文
我正在尝试使用Thinktecture.IdentityModelResourceAuthorize
的属性,但由于没有 owin 上下文,一切都停止了。
我有一个设置授权管理器的 owin 启动类
我知道它被检测到并被调用。但后来,当从 中点击以下代码时IdentityModel
,我得到一个空指针异常:
我已经通过并看到它是由 GetOwinContext() 返回 null 引起的,因为请求中没有MS_OwinContext
orMS_OwinEnvironment
属性。
我错过了什么?
更新:
我发现我有一个owin.environment
可用的属性,但它是 `HttpContextWrapper 的一部分,而不是请求。
通过四处搜索,我发现其中的一些代码System.Web.Http.WebHost.HttpControllerHandler
看起来应该已将 转换owin.environment
为MS_OwinEnvironment
,但显然,在我的情况下从未调用过该代码......
更新 2:
在 mvc 控制器内部,上下文是可用的。但不在 webapi 控制器中。
asp.net-mvc - MVC5 allow relying party to use JWT security tokens
I am using Thinktecture IdentityServer v2, the Relying Party token type is set to none. The code runs fine with this setting.
I am looking to use JWT tokens so I have a common interface from my MVC app to the API, and also from phone/tab app clients to the API.
When I set the token type to JWT, I sign in on IdentityServer then it throws the following error:
I created a standard MVC app and had set the Authentication to Organizational Accounts -> On premise
, and had set On-Premises Authority to the IdentityServer metadata url.
I plan to call WCF from the MVC app (and perhaps even javascript code on other platforms).
So far I have installed the specific JWT handler Update-Package System.IdentityModel.Tokens.Jwt -Version 3.0.2
(v4.0.0 has an issue apparently with Thinktecture IdentityServer v2) and then set the web.config to include:
However I then get a new exception when logging in:
How can I have the MVC app so it can consume JWT tokens?
asp.net-mvc - RestSharp 使用 Thinktecture AuthenticationConfiguration 调用 WebAPI
我在 MVC 应用程序中使用 Restsharp,试图调用受 Thinktecture IdentityModel 保护的后端 MVC WebAPI AuthenticationConfiguration
。
MVC API 设置
我的 MVC API 测试设置如下:
Javascript 工作正常
我知道 100% 我使用 Restsharp 发送的令牌是正确的,并且可以使用等效的 json 调用(javascript 中使用的令牌与 Web MVC 控制器中使用的令牌相同,因为它存储在 Session 数组中):
从我的 MVC Web 前端客户端应用程序调用 API - 此请求的授权已被拒绝
然后在我的 MVC 应用程序控制器操作中,我使用 RestSharp,如下所示:
检查状态,它返回"{\"message\":\"Authorization has been denied for this request.\"}"
。
我已经尝试使用带有request.AddHeader(authHeader, string.Format("Authorization Session {0}", token));
和的 Restsharp 请求方法添加令牌request.AddHeader(authHeader, string.Format("JWT {0}", token));
,但是两种方式都被拒绝了相同的访问。
请问我做错了什么或关于在哪里看的任何建议?
cookies - Thinktecture IdentityModel 令牌被拒绝
我的 Durandal SPA 应用程序执行 BASIC 身份验证以获取会话令牌,然后将其呈现在标头中以访问 Web API 控制器方法。这工作正常。
成功验证后,我将 access_token 缓存在 localStorage 中,以便我可以从本地存储重新获取它,以在浏览器关闭或刷新时保留会话。令牌被重新获取,但被服务器拒绝并显示未经授权的消息。
这个问题首先说 OP 已经成功地完成了我想要做的事情,所以这当然是可能的,但他展示的代码是(不成功)尝试进行 cookie 映射的示例,我无法判断我的性质从中的问题。
这个问题的答案之一说
幸运的是,WIF 有办法减轻 [重放攻击]。通过配置:
事实上,我确实在我的开发工作站上安装了 WIF,但我不知道从哪里开始寻找这个设置。搜索我的 HDD 在 17 个 System.IdentityModel 相关的 DLL 中找到了“tokenReplayDetection”,但在任何配置文件中都没有。
有没有人认为这实际上是问题所在,如果是这样,它住在哪里?任何其他想法也感激不尽。
wif - 验证 - 提供登录电子邮件地址以查找用户身份
我正在使用 Thinktecture AuthenticationConfiguration 为我的 API 上的令牌签名提供一个端点:
并使用 CredentialsService 对用户进行身份验证:
上面的工作,当然不是在生产中使用,但是在返回 true 时,我会得到一个令牌,其中包含一个带有用户名的声明。
在我的场景中,我有一个永远不会改变的用户 ID(一个整数),我希望这在我的声明中。因此,用户将在标头中将电子邮件地址传递给服务端点作为基本身份验证,然后如果有效,则继续使用 id 作为声明(但不是作为声明的电子邮件地址)进行签名:
我很感激这需要对 sql server 数据库进行第二次查找以将 emailAddress 转换为 userId,有没有办法在调用 CredentialsService 之前将其插入到管道流中?
或者我是不是走错了路,只是坚持使用登录的用户名,然后使用基于用户名的声明转换来丰富整数身份 - 但是如果他们更改了用户名怎么办?
security - 在 WebAPI 中验证 JWT 声明
鉴于下面的 Thinktecture AuthenticationConfiguration:
它将返回一个示例 JWTeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzZXNzaW9uIGlzc3VlciIsImF1ZCI6Imh0dHA6Ly9zZXNzaW9uLnR0IiwibmJmIjoxNDIwMzk2ODgyLCJleHAiOjE0MjA0MDA0ODIsInVuaXF1ZV9uYW1lIjoicGFzcyIsImF1dGhtZXRob2QiOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvYXV0aGVudGljYXRpb25tZXRob2QvcGFzc3dvcmQiLCJhdXRoX3RpbWUiOiIyMDE1LTAxLTA0VDE4OjQxOjA0LjAxOVoiLCJyb2xlIjoiVmVyaWZpZWQifQ.h7curaLrqkMT4Btg-AAoEpNYqUIYNQA_y-eUdEwQBqs
这是:
我将如何验证 JWT 是从受信任的机器发出的,我们可以使用对称密钥作为私有签名密钥并在远程机器上使用相同的密钥进行验证吗?
我如何连接 WebAPI 以便它自动为我们执行此操作(假设 AuthenticationConfiguration 位于另一台专用于帐户安全 api 的机器上)。
asp.net-mvc-5 - MVC5 OWIN ADFS 身份验证循环问题 - Thinktecture ResourceAuthorizationManager
我对 MVC5 Web 应用程序有一个特殊的问题。它使用了一个非常标准的 OWIN 实现和 Thinktecture ResourceAuthorizationManager。
它被配置为与 ADFS 一起使用。
我面临的问题是,在应用程序部署并在服务器(服务器 2012R2 中的 IIS)上运行一段时间后,当您尝试登录时,您会陷入身份验证循环。我添加了一个跟踪,它显示 IsAuthenticated 是错误的,即使在从 ADFS 成功回发之后也是如此。
如果我回收应用程序池,它会在短时间内开始按预期工作。
我非常需要一些关于在哪里寻找的指示。
编辑:在别处找到解决方案。可以在此处找到答案:ADFS 身份验证期间的间歇性重定向循环
c# - Thinktecture 声明授权工作流程。它是如何工作的?
我已经安装了Thinktecture.IdentityModel.Core包。
假设我已经AuthorizationManager
在web.config文件中注册了我的自定义实现。
在应用程序数据库中为用户角色定义了一个权限。因此,如果它在角色中,它User
可能具有Read
权限Blogs
和资源。Arts
BasicUser
我看到的工作流程:
- 在登录时,您进行db 查询以从经过身份验证的用户的所有分配角色中获取所有操作资源对
- 那么你必须向身份添加声明(基于数据库查询结果)
ClaimsAuthorizationAttribute
打电话给ClaimsAuthorizationManager
ClaimsAuthorizationManager
在内部使用步骤 2 中的声明检查身份验证 cookie
我对吗?
还是我应该在CheckAccess
方法内进行数据库权限查找?这将在每个请求的基础上工作吗?
我如何将 db 感染的动作资源集转换/附加到身份声明中?
wif - Thinktecture BasicAuthenticationSecurityTokenHandler 返回 StatusCode 500,内部服务器错误
我最近从旧的 Thinktecture IdentityModel 升级到了支持 Web API 2 的最新 IdentityModel。
下面的代码适用于以前的 nuget 包(以及托管它的较小 webapi 版本),当我使用 System.Web.Mvc v5.2.2.0 虽然它到达 ValidateToken 函数的末尾时,调用客户端收到错误{StatusCode: 500, ReasonPhrase: 'Internal Server Error'
我要返回的索赔是:
我通过以下方式配置:
知道我做错了什么吗?