问题标签 [custom-authentication]

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 投票
2 回答
10025 浏览

asp.net-mvc - 为会话设置 HttpContext.User

我已经在 ASP.NET MVC 中实现了自定义身份验证。如果有效用户尝试登录,我会HttpContext.User = user在 AccountController 的 Logon 方法中设置。但它只存在于那个请求中。如何为会话设置它?

我使用了另一种方法 set HttpContext.Session["CurrentUser"] = user。如果我想查看会话是否被授权,我必须检查HttpContext.User != null. 但是,我不想在应用程序的任何地方公开身份验证逻辑。如果我需要改变它,那会很乱。

请帮我解决这个问题。一种解决方案可能是在开始HttpContext.User时使用值填充每个请求的属性HttpContext.Session["CurrentUser"],但我不知道该怎么做。

0 投票
3 回答
583 浏览

django - 寻找在 Django 中设置自定义身份验证后端的综合指南,或指针

我正在尝试设置一个自定义后端来查询另一个数据库,为此我在系统中创建了一个模型。它使用自己的规则(电子邮件而不是用户名,以及不同的加盐/哈希密码),所以我不能使用内置身份验证。我已经设置了一个自定义身份验证后端,如下所示:

我添加了 BlahBlahBackend 作为身份验证后端:

AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend', 'socialauth.auth_backends.OpenIdBackend', 'socialauth.auth_backends.TwitterBackend', 'socialauth.auth_backends.FacebookBackend', 'socialauth.auth_backends.BlahBlahBackend', )

如您所见,我还使用了一些预先存在的身份验证后端,这些后端也在 socialauth 中。

我有一个指向以下观点的提交表单:

但是,当我尝试以这种方式登录时,似乎一个或多个其他后端的行为就好像我正在尝试使用他们的方法登录一样。

我读到后端已缓存,因此运行

清除后端缓存。

我的主要问题是:

  1. AUTHENTICATION_BACKENDS 中列出项目的顺序
  2. 系统如何决定/知道使用哪个后端?任何文档都没有明确说明这一点,我觉得这有点令人困惑。
  3. 有没有办法根据请求强制使用特定的授权。换句话说,如果有人提交表单,有没有办法强制他们使用基于表单登录的身份验证,而不是通过 openid 或 Twitter 登录?

更新:

有用!这很酷,谢谢。我想 django 文档似乎在说“你不必做任何其他事情,它就像魔术一样工作”,事实证明确实如此。只要后端在那里并且凭据设置正确,身份验证就会起作用。事实证明,真正的问题是 urls.py 文件中的错误配置,没有将登录表单中的帖子发送到正确的处理程序,这就是它一直尝试使用另一种身份验证方法的原因。

0 投票
2 回答
1435 浏览

asp.net-mvc - IIS7 中的自定义基本身份验证失败

我有一个 ASP.NET MVC 应用程序,其中包含一些 RESTful 服务,我正在尝试使用自定义基本身份验证来保护这些服务(它们是针对我自己的数据库进行身份验证的)。我通过编写 HTTPModule 实现了这一点。

我有一个附加到 HttpApplication.AuthenticateRequest 事件的方法,它在身份验证失败的情况下调用此方法:

此方法附加到 HttpApplication.EndRequest 事件:

此代码添加了“WWW-Authenticate”标头,告诉浏览器抛出登录对话框。当我使用 Visual Studio 的 Web 服务器进行本地调试时,这非常有效。但是当我在 IIS7 中运行它时它失败了。

对于 IIS7,我将所有内置身份验证模块都关闭了,匿名除外。它仍然返回 HTTP 401 响应,但似乎正在删除 WWW-Authenticate 标头。

有任何想法吗?

0 投票
2 回答
5761 浏览

java - Spring - 从控制器调用 custom-authentication-provider

我在 Spring Security 配置中定义了一个自定义身份验证提供程序。这个类实现了AuthenticationProvider,我可以使用我页面上定义的表单成功登录。问题是我不仅想在登录页面上调用这个类,还想在注册页面上调用这个类。

注册页面使用不同的命令类并收集比登录表单更多的信息。现在,当用户注册时,我调用相应的控制器,将记录添加到数据库中,然后他们可以登录,但他们不会自动登录。由于他们刚刚在注册页面上给了我他们的用户名/密码,我可以将其传递给自定义 AuthenticationProvider 类以便他们也登录吗?

我尝试在注册控制器中创建一个 org.springframework.security.Authentication 类并在我的客户 AuthenticationProvider 类上调用 authenticate 方法,这不会出错,但用户没有登录。我必须调用 Spring Security 过滤器链中更高的方法来完成此操作?我应该将控制器重定向到 j_spring_security_check URL吗?如果是这样,我将如何传递用户名/密码?

0 投票
1 回答
936 浏览

c# - 为什么我的 HelloWorld WCF 服务自定义 X.509 身份验证不起作用?

编辑:当我使用客户端执行测试服务时,我得到了响应。我不应该得到回应。应该发生的是 CertificateValidator.Validate() 应该抛出异常,因为没有发送证书。我知道它没有被调用,因为如果我让它在不进行任何测试的情况下抛出异常,它仍然不会。所以,我很肯定配置是错误的

编辑:我认为这篇文章中缺少一些代码,来自 XML 文件。不知道如何进入。重要的是其中的身份验证配置。

这里有很多代码,但这里有。首先解释一下,我有一个可以工作的客户。我的服务有效。现在我想让一些自定义身份验证工作。我不明白为什么它不是,当我测试它时应该有一个错误或没有响应,因为没有发送证书,但没有哪个是错误的。

编辑:对不起,补充一下,有对所有必需文件等的引用。

这是服务的配置。自定义类的引用位在底部,它看起来几乎与 MSDN 站点上的相同。

接下来是我的服务类:

和:

最后是我的 CertificateValidation 类:

0 投票
2 回答
935 浏览

silverlight - 使用 Entity-Framework 和 Silverlight WCF RIA-Services 开发自定义授权服务?

我正在拼命地尝试使用 RIA 服务进行开发,但我希望 User 和 Role 类是由 EDM 设计器生成的实体。
问题在于,我不能从 继承UserBase,因为实体已经从 继承EntityObject
我试图按照我在网上的几次讨论中阅读的内容,并使用IUser接口实现了 User 的部分类,具有AuthenticationService继承LinqToEntitiesDomainService<MyEntities>和实现IAuthentication<User>

但是因为我觉得这是一个死胡同,因为我一直在到处出错而没有结果,我想我可以把我的问题发给那些经历过它并愿意分享他们一直在争取的知识的人,并做出我的生活更轻松。

我求求你,请只分享你有经验的想法,我花了很多时间寻找解决方案。

更新:
我设法让它编译并运行,但现在我有一个非常奇怪的情况:应用程序运行几秒钟后,它消失了(我使用 Out-Of-Browser),窗口框架仍然存在,但没有内容!

这是我为使其编译所做的工作:

  • 生成实体模型实体
  • 使User类实现IUser
  • 标记Name返回用户名的已实现属性KeyDataMember属性
  • 属性DataMember上的Roles属性
  • 然后我运行该项目,它确实编译但几秒钟后内容消失了,没有让我知道内部异常的来源!

我只能说在输出窗口中打印以下内容后会发生消失:

然后,当它消失时,它写道:

我经历过的资源:

0 投票
2 回答
1673 浏览

asp.net-mvc - 在每个请求 asp.net mvc 上拥有基于角色的自定义身份验证查询数据库的正确方法

这可能是一个有点无知的问题,但我是 mvc 新手,所以很抱歉!

我研究了书呆子晚餐身份验证模型,但在我的应用程序中,我有一个复杂的基于角色的身份验证。所以我要做的是:

在登录时,我使用 FormsAuth 验证用户名/密码,然后创建 cookie。

这里的问题是每次创建自定义身份时,我都必须在数据库中查询用户角色。有没有解决这个问题的正确方法,或者我是否在做正确的事情来查询每个传入请求的数据库?我应该将角色列表保存在 cookie 中吗?

我也不太了解表单身份验证如何处理身份验证的整个生命周期?我使用与IFormsAuthentication书呆子晚餐用户相同的设计模式,并且在登录期间我调用FormsAuth.SignIn()它依次调用FormsAuthentication.SetAuthCookie,它何时设法调用该membershipservice.validateuser()方法?此外,如果已设置身份验证 cookie,为什么 nerd Dinner 会创建票证,然后将其添加到请求中,然后在期间读取它PostAuthenticationRequest以检查它是哪个用户。票务操作是否像会话?

谢谢!圣诞节快乐!


更新这个链接让我对表单身份验证票有了更好的理解。

0 投票
1 回答
656 浏览

asp.net-mvc - ASP.NET MVC 中基于组的授权

我有像管理员、用户这样的站点角色,这很好。

但是假设我有一个合法的申请(或任何类似的申请)。我有一个名为Case. 现在,我可以有很多案例,但并非所有用户都应该有权访问任何特定案例。假设 Fred 和 Tom 应该有权访问 Case1,但只有 Gina 和 Rebecca 应该有权访问 Case2?

很简单,对吧?我们有案例,用户可以属于一个案例。这是第一部分。第二部分是如何拥有“案例角色”,因此 Fred 可以成为 Case1 的“管理员”并且能够进行重大更改,但也许 Tom 只是 Case1 的“用户”并且只能做一些小事并且具有只读权限访问等

我知道我可能需要实现自定义属性等,但我在 Web 上找不到这种特殊事物的任何示例。但我想这在大多数业务应用程序中一定很常见。(如 Basecamp 或 Highrise 等)

更新让我举一个不同的例子:

以像 Basecamp 这样的项目管理软件即服务应用程序为例。用户可以创建“项目”。然后该用户可以邀请其他用户加入她的“项目”。但是,创建用户可以为每个用户分配不同的权限到她的项目。基本问题是如何在 ASP.NET MVC 中做这种事情。

0 投票
2 回答
999 浏览

.net - 如何为 WCF Web 服务实现自定义身份验证机制

我刚刚创建了我的第一个 WCF 服务。现在我想做以下事情:

  1. 添加我的自定义身份验证机制,例如,查询数据库的用户表。

  2. 使我的服务操作的结果依赖于已登录的用户。

我怎么做?

注意:我已经尝试过使用谷歌搜索,甚至使用“site:stackoverflow.com”和“site:codeproject.com”等站点过滤器,但找不到我需要的内容。

0 投票
1 回答
974 浏览

wcf - 使用 IIS7、WCF Rest、自定义身份验证模块进行模拟

所以我正在建立一个 WCF 服务,托管在 iis7 中。该服务是 REST 服务。

到目前为止,我们对身份验证的要求是只有域帐户才能连接到服务。我们正在使用基本身份验证并使用模拟通过我们的业务层调用我们的数据库。

这一切都运作良好。

现在我们需要允许非域帐户使用我们的服务。由于 IIS 的原因,我实现了这个(http://custombasicauth.codeplex.com/)和一个自定义成员资格提供程序,它将(取决于传入的用户名)尝试针对 Active Directory 或针对 asp.net 成员身份进行身份验证提供者。这部分工作正常。

我现在遇到的问题是模拟不起作用(这是可以理解的。)现在,这是我迷失的地方,需要帮助指导或清除所有迷雾。我想做的(我不知道这是否可能)是这样的:

如果用户是域用户,那么模拟他们的帐户。如果不是域用户,则模拟“通用用户域帐户”。作为奖励,我希望这发生在“幕后”,这样我们拥有的每个方法都不需要添加特殊的逻辑来处理这个问题。

我已经阅读了一堆关于身份、策略提供者、角色提供者的东西……现在我完全糊涂了。

有人对此有所了解吗?