javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

git

.net

ios

ruby-on-rails

sql

c

string

ruby

.net-在自定义授权MVC4 Web Api中访问发布或获取参数

是否可以通过HttpActionContext对象访问post或获取参数?

我有一组传感器,可将数据记录到提供REST API的Web服务器上。 我想通过让传感器在数据中包含其硬件ID,然后在数据库中查找ID是否存在来介绍某种身份验证/授权。 由于API提供了许多Web api操作方法,因此理想情况下,我想使用自定义授权属性

public class ApiAuthorizationFilter : AuthorizeAttribute
{
    protected override bool IsAuthorized(HttpActionContext actionContext)
    {
        return false;
    }
}

如何从actionContext访问发布/获取数据?

编辑:POST示例

POST /Api/api/ActionMethod/ HTTP/1.1\r\n
Content-Type: application/json\r\n
Host: localhost\r\n
Accept: */*\r\n
Content-Length:52\r\n
\r\n
{"Id": '121a222bc', "Time": '2012-02-02 12:00:00'}\r\n

祝你今天愉快!

trans by 2019-11-11T13:15:52Z

apache2-Django rest_framework中缺少授权标头,是否应该责怪apache?

我设法扩展了TokenAuthentication,并在使用请求会话存储令牌时使用了一个工作模型,但是,当我尝试按此处所述将Authorization作为标头参数传递时,我注意到我的响应没有META变量HTTP_AUTHORIZATION而返回 。 我还注意到,如果我将“ Authorization2”作为标头参数传递,则它在请求中可见:

{
    '_content_type': '', 
    'accepted_media_type': 'application/json', 
    '_request': <WSGIRequest
        path:/api/test_auth/,
        GET:<QueryDict: {}>,
        POST:<QueryDict: {}>,
        COOKIES:{
            'MOD_AUTH_CAS_S': 'ba90237b5b6a15017f8ca1d5ef0b95c1',
            'csrftoken': 'VswgfoOGHQmbWpCXksGUycj94XlwBwMh',
            'sessionid': 'de1f3a8eee48730dd34f6b4d41caa210'
        },
        META:{
           'DOCUMENT_ROOT': '/etc/apache2/htdocs',
           'GATEWAY_INTERFACE': 'CGI/1.1',
           'HTTPS': '1',
           'HTTP_ACCEPT': '*/*',
           'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
           'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
           'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
           'HTTP_AUTHORIZATION2': 'Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4c',
           ...

我的第一个猜测是apache正在删除授权标头,并且我读过一些S / O问题,指出如果apache与基本授权和身份验证不匹配,它将抛出该值,但是我不知道如何 允许Authorization标头“传递”给Django和WSGIRequest。 有谁知道如何解决这个问题?

我也使用mod_auth_cas和mod_proxy,如果那改变了。

trans by 2019-11-08T14:23:55Z

用户界面-应该隐藏,禁用UI中未经授权的操作,还是导致错误?

对我来说,这是一个长期存在的问题,我从未真正解决过,因此我希望您的意见。 如果我知道由于权限或对象状态不足而导致用户无法执行操作,这些操作的UI元素是否应该向用户隐藏,可见但被禁用或可见,并且在尝试操作时导致错误? 您回答的依据是什么? 如果被禁用,您能否说明原因?

这是一个Web界面,因此我已经知道我需要检查传入的帖子/获取权限并无论如何都要处理错误。 我主要是在谈论如何处理UI。

这与关于禁用或隐藏菜单项的规则相似,尽管我对所有类型的UI元素(不仅是菜单)都感兴趣。

例子:

  1. 我有一个允许用户创建新事件的新页面。 事件可以是主事件或子事件。 创建主事件需要“ EditMasterEvent”特权,而创建子事件仅需要“ EditEvent”特权。 我有一个下拉菜单,允许您选择一个现有事件作为父事件(主事件)或不选择父事件(这是一个主事件)。 如果用户仅具有“ EditEvent”特权,则应在下拉菜单中显示“创建主事件”选项,还是应将其省略。

  2. 删除事件要求您是应用程序管理员或具有事件类型的适当编辑权限。 在后一种情况下,事件还必须超过5年。 删除事件会导致系统中相关数据的主要级联删除,并且出于法律原因,该数据必须在事件发生后至少保留5年。 由于此操作对于普通用户而言很少见,因此典型的情况是该操作不可用。 应该始终显示还是仅在实际可能的情况下显示?

trans by 2019-11-07T11:31:12Z

身份验证-MongoDB“ root”我们

MongoDB是否有超级UNIX之类的“ root”用户? 我一直在看[http://docs.mongodb.org/manual/reference/user-privileges/],并尝试了许多组合,但是它们似乎都缺少某个区域或另一个区域。 当然,在上面列出的所有角色中,首先要有一个角色。

trans by 2019-10-24T01:56:52Z

身份验证-MongoDB“ root”我们

MongoDB是否有超级UNIX之类的“ root”用户? 我一直在看[http://docs.mongodb.org/manual/reference/user-privileges/],并尝试了许多组合,但是它们似乎都缺少某个区域或另一个区域。 当然,在上面列出的所有角色中,首先要有一个角色。

trans by 2019-10-14T01:39:09Z

.net-ASP.NET MVC中的用户身份验证和授权

在ASP.NET MVC中进行用户授权/身份验证的最佳方法是什么?

我看到确实有两种方法:

  • 使用内置的ASP.NET授权系统。
  • 使用具有我自己的用户,权限,用户组表等的自定义系统。

我更喜欢第二种选择,因为用户是我的域模型的一部分(我对ASP.NET的内置知识零经验),但是我真的很想听听人们在这方面所做的事情。

trans by 2019-10-10T01:14:20Z

c#-通过ASP.NET MVC B中的IP地址限制对特定控制器的访问

我有一个包含AdminController类的ASP.NET MVC项目,并给了我类似这些的URls:

[http://example.com/admin/AddCustomer]

[http://examle.com/Admin/ListCustomers]

我想配置服务器/应用程序,以便只能从192.168.0.0/24网络(即我们的LAN)访问包含/ Admin的URI。

我想限制此控制器只能从某些IP地址访问。

在WebForms下,/ admin /是我可以在IIS中限制的物理文件夹...但是对于MVC,当然没有物理文件夹。 使用web.config或属性可以实现此目的,还是需要拦截HTTP请求才能实现此目的?

trans by 2019-10-08T02:25:10Z

java-如何将JAAS授权检查委托给Shiro?

我正在开发一个服务器端应用程序,该应用程序需要基于对象的身份验证和授权。 我喜欢Shiro的简单性,但是为了与JAAS兼容,我编写了一个LoginModule,它使用Apache Shiro作为底层机制。

但是我的问题是我找不到将JAAS授权检查委托给Shiro的方法。 我该如何实现?

trans by 2019-10-03T14:15:07Z

传统Web应用程序和API中的身份验证,授权和会话管理

如果我错了,请纠正我:在传统的Web应用程序中,浏览器会自动将会话信息附加到服务器的请求中,以便服务器可以知道请求的来源。 实际上究竟附加了什么?

但是,在基于API的应用程序中,此信息不会自动发送,因此在开发API时,我必须检查自己是否来自例如经过身份验证的用户的请求? 通常如何做?

trans by 2019-09-27T12:49:11Z

重定向ASP.NET MVC中未经授权的控制器

我在ASP.NET MVC中有一个控制器,但仅限于管理员角色:

[Authorize(Roles = "Admin")]
public class TestController : Controller
{
   ...

如果没有管理员角色的用户导航到该控制器,则会看到空白屏幕。

我想做的就是将他们重定向到View,上面写着“您必须具有管理员角色才能访问此资源。”

我想到的一种方法是检查IsUserInRole()上的每个操作方法,如果不起作用,则返回此信息视图。 但是,我必须将其放入每个会破坏DRY原理并且很麻烦维护的Action中。

trans by 2019-09-25T20:46:22Z

授权 - 如何在SVN中设置访问控制?

我已经使用SVN建立了一个存储库并上传了项目。 有多个用户在处理这些项目。 但是,并非所有人都在处理所有项目并需要访问权限。 我想为每个项目的用户设置权限。

我该如何实现这一目标?

trans by 2019-09-19T18:43:00Z

如何正确使用cURL定义基本HTTP身份验证?

我正在学习Apigility(Apigility docu - &gt; REST服务教程)并尝试通过cURL发送带有基本身份验证的POST请求:

$ curl -X POST -i -H "Content-Type: application/hal+json" -H "Authorization: Basic YXBpdXNlcjphcGlwd2Q=" http://apigilityhw.sandbox.loc/status

YXBpdXNlcjphcGlwd2Q=是基本64位编码的字符串,其凭据为apiuser:apipwd.凭据保存在/data/htpasswdapiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/)中。

看起来像这样:

HTTP/1.1 401 Unauthorized
Server: nginx/1.4.7
Date: Mon, 22 Sep 2014 07:48:47 GMT
Content-Type: application/problem+json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.5.12-1~dotdeb.1
WWW-Authenticate: Basic realm="api"

这里的错误在哪里? 如何让它工作?

trans by 2019-08-19T07:40:40Z

Asp.net WebApi中的自定义授权 - 真是一团糟?

我正在阅读有关Web Api授权的几个来源(书籍和SO答案)。

假设我想添加自定义属性,该属性仅允许特定用户访问:

情况1

我已经看到了覆盖AuthorizeAttribute的这种方法,如果出现问题则会设置响应

public class AllowOnlyCertainUsers : AuthorizeAttribute
{
 public override void OnAuthorization(HttpActionContext actionContext)
  {
   if ( /*check if user OK or not*/)
   {
     actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
   }
  }
}

案例#2

但我也看到过这个类似的例子,它也覆盖了AuthorizeAttribute但是调用了AuthorizationFilterAttribute

public override void OnAuthorization(HttpActionContext actionContext) 
{ 
  base.OnAuthorization(actionContext);

    // If not authorized at all, don't bother

    if (actionContext.Response == null)  
     {
      //...
     }
}

然后,你检查一下是否设置了AuthorizeAttribute。 如果未设置,则表示请求已获得授权且用户可以

案例#3

但我也看到了覆盖AuthorizeAttribute的这种方法:

public class AllowOnlyCertainUsers : AuthorizeAttribute
{
 protected override bool IsAuthorized(HttpActionContext context)
  {
   if ( /*check if user OK or not*/)
   {
    return true;// or false
   }
  }
}

案例#4

然后我看到类似的例子,但是调用base.IsAuthorized(context):

protected override bool IsAuthorized(HttpActionContext context)
{
 if (something1 && something2 && base.IsAuthorized(context)) //??
 return true;
 return false;
}

还有一件事

最后,多米尼克在这里说:

您不应该覆盖OnAuthorization - 因为您将缺少[AllowAnonymous]处理。

问题

  • 1)我应该使用哪种方法:AuthorizeAttributeAuthorizationFilterAttribute? (或何时使用哪个)

  • 2)什么时候应该拨打AuthorizeAttribute base.OnAuthorization`?

  • 3)这是他们建造它的方式吗? 如果响应为null则一切正常? (案例#2)

NB

请注意,我正在使用(并且想要使用)仅已继承自AuthorizationFilterAttributeAuthorizeAttribute

为什么?

因为我处于第一阶段:[http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api]

enter image description here

无论如何我要求通过扩展Authorize属性。

trans by 2019-07-26T18:23:51Z

授权 - 带有权限代码的ASP.NET MVC 4自定义授权属性(无角色)

我需要在我的MVC 4应用程序中根据用户权限级别(没有角色,只分配给用户的CRUD操作级别的权限级别)来控制对视图的访问。

举个例子; AuthorizeUser下面将是我的自定义属性,我需要像这样使用它:

[AuthorizeUser(AccessLevels="Read Invoice, Update Invoice")]
public ActionResult UpdateInvoice(int invoiceId)
{
   // some code...
   return View();
}


[AuthorizeUser(AccessLevels="Create Invoice")]
public ActionResult CreateNewInvoice()
{
  // some code...
  return View();
}


[AuthorizeUser(AccessLevels="Delete Invoice")]
public ActionResult DeleteInvoice(int invoiceId)
{
  // some code...
  return View();
}

有可能这样做吗?

trans by 2019-06-30T12:28:16Z

如何在烧瓶中获取http标头?

我是python的新手并使用Python Flask并生成REST API服务。

我想检查发送给客户端的授权标头。

但我无法找到获取HTTP标头的方法。

任何有关获取HTTP标头授权的帮助都表示赞赏。

trans by 2019-06-26T21:34:03Z

c# - 如何在ASP.NET MVC 5中实现自定义身份验证

我正在开发一个ASP.NET MVC 5应用程序。 我有一个现有的数据库,我从中创建了我的ADO.NET实体数据模型。我在该DB中有一个包含“username”和“password”列的表,我想用它们在我的Webapp中实现身份验证和授权; 我无法创建任何其他数据库或表或列,因为客户的要求,我无法使用标准身份验证。我不需要管理注册,密码更改或其他内容:只需使用密码和用户名登录。我怎样才能做到这一点?

trans by 2019-06-18T17:18:42Z

安全性 - Node.js应用程序的授权方法和设计模式

我正在为内部企业软件平台构建一个多页面管理界面。 想想许多粘合逻辑将各种API,数据库查询和shell脚本捆绑在一起。

我们将使用node.js,express框架(包括jade模板)和LDAP进行身份验证。

我正在努力寻找有关节点应用程序授权的设计模式和最佳实践的信息。 最好,我想使用基于角色的模型,因为我的用户熟悉这种方法及其护理和喂养。

我是node.js的新手,所以请不要假设我已经看过一个模块或热门博客文章。 可能有大量的信息,我根本不知道在哪里看。

提前感谢您提供的任何信息!

trans by 2019-06-09T23:55:17Z

c# - 在ASP.NET MVC中重定向未授权的控制器

我在ASP.NET MVC中有一个控制器,我已将其限制为admin角色:

[Authorize(Roles = "Admin")]
public class TestController : Controller
{
   ...

如果不在Admin角色中的用户导航到此控制器,则会显示空白屏幕。

我想要做的是将它们重定向到View,其中显示“您需要处于Admin角色才能访问此资源”。

我想到的一种方法是在IsUserInRole()上检查每个操作方法,如果不在角色中,则返回此信息视图。 但是,我必须在每个打破DRY主体的Action中加入它,显然很难维护。

trans by 2019-06-08T11:58:20Z

安全性 - 如何在RESTful应用程序中阻止CSRF?

通常使用以下方法之一阻止跨站点请求伪造(CSRF):

  • 检查referer - RESTful但不可靠
  • 将令牌插入表单并将令牌存储在服务器会话中 - 而不是真正的RESTful
  • 含糊不清的一次性URI - 由于与令牌相同的原因而不是RESTful
  • 手动为此请求发送密码(不是HTTP身份验证使用的缓存密码) - RESTful但不方便

我的想法是使用用户秘密,一个神秘但静态的表单ID和JavaScript来生成令牌。

<form method="POST" action="/someresource" id="7099879082361234103">
    <input type="hidden" name="token" value="generateToken(...)">
    ...
</form>
  1. generateToken(7099879082361234103, 89070135420357234586534346)由来自经过身份验证的用户的JavaScript提取。
  2. 回复:generateToken(7099879082361234103, 89070135420357234586534346)这个秘密在概念上是静态的,但可以每天/每小时更改......以提高安全性。 这是唯一保密的事情。
  3. 使用JavaScript阅读神秘的(但对所有用户都是静态的!)表单ID,与用户秘密一起处理它:generateToken(7099879082361234103, 89070135420357234586534346)
  4. 将表单与生成的令牌一起发送到服务器。
  5. 由于服务器知道用户密钥和表单ID,因此可以在发送之前运行与客户端相同的generateToken函数并比较两个结果。 只有当两个值相等时,才会授权操作。

这种方法有问题,尽管事实上没有JavaScript它不起作用吗?

附录:

  • 无国籍CSRF保护
trans by 2019-05-28T04:15:45Z

api - 自定义授权HTTP头

我需要在向API发送请求时对客户端进行身份验证。 客户端有一个API令牌,我正在考虑使用标准的Basic标头将令牌发送到服务器。

通常,此标头用于BasicDigest身份验证。 但我不知道是否允许自定义此标头的值并使用自定义身份验证方案,例如:

Authorization: Token 1af538baa9045a84c0e889f672baf83ff24

你会推荐这个吗? 或者是否有更好的方法来发送令牌?

trans by 2019-05-12T16:58:19Z

1 2 下一页 共2页