问题标签 [asp.net-authorization]

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.

0 投票
1 回答
304 浏览

asp.net-mvc - 如何从 ASP.NET 成员资格、配置文件中检索属性?

在 web.config 我定义了属性:

我可以为此属性设置值,例如

但是如何根据 MembershipUser 获得价值?如果我在视图中遍历 MembershipUserCollection,如何显示我的属性Creator

先感谢您!

0 投票
1 回答
116 浏览

c# - 混合文件系统上的 imageresizing.net(数据库驱动链接到文件系统上的数据文件)

我偶然发现了 ImageResizing.net 的 ImageResizer,我想知道如何将它与我的网站集成。我们有很多我们认为向公众开放的文件\图像,然后我们还有其他私有的。我们将所有图像都放在网络服务器上的安全文件夹中,无法通过 url 访问,并且我们有一个链接到这些文件的数据库。我们使用 Web 处理程序 (ashx) 将图像传递给用户(网页等),因为关于是否允许用户查看文件的规则比他们所属的角色要复杂得多。例如,某些图像仅对我们发送请求的用户可见(数据库保存此关系信息)。我们不 t 将数据库中的文件/图像存储为 Blob,因为这会大大增加我们的数据库大小(使用 SQLServer Express,因此需要保持在 10GB 限制以下),而且我认为这会影响性能,但我可能是错的。话虽如此,使用 ImageResizer 的最佳方法是什么?

我读了一些关于 IViertualImageProvider 的内容,我想我必须使用这种格式(http://imageresizing.net/docs/extend/virtualimageprovider)编写一个插件。我是否只需在此处输入我的身份验证/授权逻辑以确定图像是否已交付。有没有更好的办法?有人已经为这种情况构建了一个插件吗?

0 投票
1 回答
258 浏览

asp.net-mvc - 提高我的自定义授权模块的性能和可扩展性

我有一个授权要求,我的安全角色基于操作方法,使用默认的 asp.net mvc 授权无法实现。所以我创建了以下操作过滤器,以实现我的自定义授权要求:-

它正在调用以下存储库方法:-

我在我的控制器类中调用动作过滤器如下:-

但我有以下担忧:-

  1. 在我的存储库中,我将检索所有用户和组(调用 .Tolist() 时),然后检查当前登录用户是否在这些值内。在处理大量用户时,哪个不是很可扩展?

  2. 每次用户调用操作方法时,都会运行相同的安全代码(当然,理想情况下,用户权限可能会在用户会话期间发生变化),,这可能会导致性能问题?

那么,考虑到这两个问题,谁能告诉我如何改进我目前的实施?谢谢

0 投票
2 回答
8677 浏览

asp.net - 在 ASP.NET MVC Web API 服务和 MVC 客户端架构中实现身份验证和基于角色的授权

在为我的 Web API(服务)-MVC(客户端)架构项目实施身份验证/授权方案时,我很难决定一种方法。尽管我已经在 Web API 项目中实现了基于自定义令牌的身份验证,但我发现我应该在哪里实现授权(在客户端或 API 本身中)很难。


架构概述:

  • 项目解决方案-
    |
    | __ 基于 ASP.NET Web API 的 REST 服务(独立托管在 M/C 1 的 IIS 上)
    |
    | __ 基于 ASP.NET MVC 的客户端(独立托管在 IIS 上的 M/C 2 使用 REST 服务)
    |
    | __ 智能手机客户端应用程序(使用 REST 服务)

已实现身份验证:

  • Web API 中基于令牌的身份验证(使用消息处理程序)- 为经过身份验证的用户生成 SHA1 加密令牌,该令牌需要成为每个 http 请求标头的一部分以进行身份​​验证。
    (令牌 = 用户名 + 用户 IP)

  • SSL 保护的 HTTP 请求。(再次,使用消息处理程序)

当前问题:

  1. 授权应该在哪一层执行?
  2. 用户角色应该如何在客户端持久化?使用 Cookie?或将角色信息添加到令牌本身(这可能会增加 API 解密信息的开销和额外的数据库调用以检索与该角色关联的权限)
  3. 身份验证令牌应如何与客户端会话保持一致?
  4. 因为,我的应用程序是 SPA MVC 应用程序,将身份验证令牌作为我对 API 进行的每个 AJAX 调用的一部分包含在内的最佳方法是什么?

我希望,在考虑整个身份验证/授权概念时,我没有做错任何事情。因此,我将不胜感激任何替代方法/建议。

0 投票
2 回答
23770 浏览

asp.net-mvc - MVC 4 AuthorizeAttribute.HandleUnauthorizedRequest ViewResult - 无限循环

我已经通过我的代码一百万次,找不到我的实现问题..

在自定义 AuthorizeAttribute 中,我覆盖了 2 个方法

授权逻辑被模拟为仅在特定控制器上返回 false,我已经逐步验证它是否正常工作。

上面的代码会导致无限循环。在我的日志中,我可以看到那条线命中了 666 次(巧合?)..

如果我调用 base.HandleUnauthorizedRequest(ctx),我得到的只是一个空白页。所以我反映了基地的作用,就是这个

所以这解释了为什么它呈现一个空白页面而不是重定向到 Unauthorized.cshtml。我不确定的是,如果我不调用基地,为什么它会进入无限循环。

ps

我已经验证,如果我放错未经授权的视图,它会出错(但仍会无限期挂起)

0 投票
1 回答
327 浏览

asp.net - 了解 ASP.NET 页面生命周期和基于角色的授权

我想要做什么

对用户进行身份验证,并根据他们的角色将他们重定向到页面。

我的问题

第一次输入正确的凭据失败。用户已通过身份验证,但在评估他们所处的角色时,没有一个 if 语句为真。第二次(回发后)它按预期工作。

我的问题

为什么这不起作用;为什么我必须对用户进行身份验证,并在设置角色之前回发?

代码

0 投票
1 回答
1352 浏览

asp.net-mvc - asp.net mvc 授权过滤器属性线程安全

http://msdn.microsoft.com/en-us/library/system.web.http.filters.authorizationfilterattribute(v=vs.118).aspx

状态

此类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。

这是否意味着以下内容不能安全地用作自定义 asp.net mvc 授权过滤器属性,因为 MyCustomRoles 是实例成员?

0 投票
1 回答
230 浏览

asp.net-web-api - 看不懂 MVC5 + WebApi2 授权

我知道 OAuth 的概念是什么:用户使用授权类型、用户名和密码向服务器发送请求,在对服务器进行一些检查后,用户会收到一个访问令牌。我无法理解的是为什么我应该这样做:

什么是CreateIdentityAsync回归?什么是AuthenticationTicket? 做什么context.Validated?另外,如果我有,我oAuthIdentity为什么还要使用cookiesIdentity?最后,访问令牌在哪里生成?

我搜索但找不到解释这一点的网站。

0 投票
3 回答
8514 浏览

c# - MVC 4 中带有角色的自定义授权属性

我创建了一个自定义的角色基​​础授权属性。我的想法是,当角色名称为“员工”的用户登录时,不应允许通过 URL 访问“管理员”页面。但是当我实现[MyRoleAuthorization]in Employee 控制器并登录时,错误显示“这个网页有一个重定向循环”。这是代码[MyRoleAuthorization]

我的员工控制器看起来像这样

你能帮我么。

0 投票
1 回答
1776 浏览

entity-framework - 在 Web Api 2 OData 端点中使用基于声明的授权保护实体

给定以下控制器

我覆盖ClaimsAuthorizationManager.CheckAccess(...)

Current Principal 这仅对我可以检查in general can是否有用Read Account。但是,如果我想检查某个用户可以阅读哪些帐户,我就迷路了。

假设我有一个经理用户,他应该能够读取他作为经理的所有帐户,而非经理用户应该只能读取他们自己的帐户。

对此是否有最佳实践,或者您以前是否做过类似的事情并给我一些提示?