标签: authentication

如何进行无状态(无会话)和无cookie身份验证?

Bob使用Web应用程序来实现某些目标.和:

  • 他的浏览器正在节食,因此它不支持cookie.
  • Web应用程序是一个受欢迎的应用程序,它在特定时刻处理许多用户 - 它必须很好地扩展.只要保持会话会对同时连接的数量施加限制,并且当然会带来不可忽视的性能损失,我们可能希望有一个无会话系统:)

一些重要的说明:

  • 我们有运输安全(HTTPS及其最好的朋友);
  • 在幕后,Web应用程序代表当前用户将大量操作委托给外部服务(这些系统确实将Bob视为其用户之一) - 这意味着我们必须转发Bob的凭据.

现在,我们如何验证Bob(在每个请求上)?哪个是合理的方式来实现这样的事情?

  • 通过HTML表单隐藏字段打网球凭证... 球包含凭据(用户名和密码),两个球拍分别是浏览器和Web应用程序.换句话说,我们可以通过表单字段而不是通过cookie来回传输数据.在每个Web请求中,浏览器都会发布凭据.虽然,在单页应用程序的情况下,这可能看起来像在橡胶墙上打壁球而不是打网球,因为包含凭证的Web表单可能在网页的整个生命周期(和服务器)中保持活动状态将被配置为不提供凭证).
  • 将用户名和密码存储在页面上下文中 - JavaScript变量等.这里需要单页,恕我直言.
  • 加密的基于令牌的身份验证 在这种情况下,登录操作将导致生成加密的安全令牌(用户名+密码+其他内容).该令牌将被返回给客户端,即将到来的请求将伴随令牌.这有意义吗?我们已经有了HTTPS ...
  • 其他...
  • 不得已:不要这样做,在会话中存储凭据!会议很好.有或没有饼干.

对于任何先前描述的想法,是否存在任何网络/安全问题?例如,

  • 超时 - 我们可以保留时间戳和凭证(时间戳= Bob输入凭证的时间).例如,当NOW - timestamp> threshold时,我们可能会拒绝该请求.
  • 跨站点脚本保护 - 不应该有任何不同,对吧?

非常感谢您花时间阅读本文:)

security authentication stateless cookieless session-cookies

105
推荐指数
1
解决办法
4万
查看次数

如何在SQL Server中将Active Directory用户组添加为登录名

我有一个.net应用程序,它使用Windows身份验证连接到SQL Server.

我们无法在应用程序中使用SQL Server身份验证.我们的项目有很多Active Directory用户.因此,我们必须为SQL Server中的每个Active Directory用户创建单独的登录帐户,而不是为每个AD用户创建单独的登录帐户,有没有办法在SQL Server中使用Active Directory用户组?

sql-server security authentication sql-server-2008

104
推荐指数
2
解决办法
23万
查看次数

使用LDAP通过Active Directory在PHP中进行身份验证

我正在寻找一种通过LDAP使用PHP验证用户的方法(Active Directory是提供者).理想情况下,它应该能够在IIS 7上运行(adLDAP在Apache上运行).有没有人做过类似的事情,成功了?

  • 编辑:我更喜欢一个库/类,代码已准备就绪......当有人已经这样做时,发明轮子是愚蠢的.

php authentication ldap active-directory

102
推荐指数
6
解决办法
16万
查看次数

如何在Spring Security/SpringMVC中手动设置经过身份验证的用户

在新用户提交"新帐户"表单后,我想手动将该用户登录,这样他们就不必在后续页面上登录.

通过spring安全拦截器的普通表单登录页面工作得很好.

在新帐户形式的控制器中,我正在创建UsernamePasswordAuthenticationToken并手动在SecurityContext中设置它:

SecurityContextHolder.getContext().setAuthentication(authentication);
Run Code Online (Sandbox Code Playgroud)

在同一页面上,我稍后检查用户是否已登录:

SecurityContextHolder.getContext().getAuthentication().getAuthorities();
Run Code Online (Sandbox Code Playgroud)

这将返回我之前在身份验证中设置的权限.一切都很好.

但是当我加载的下一页上调用相同的代码时,身份验证令牌就是UserAnonymous.

我不清楚为什么它没有保留我在上一个请求中设置的身份验证.有什么想法吗?

  • 是否与会话ID未正确设置有关?
  • 有什么东西可能会以某种方式覆盖我的身份验证吗?
  • 也许我只需要另一步来保存身份验证?
  • 或者我需要做些什么才能在整个会话中声明身份验证而不是单个请求?

只是寻找一些可能有助于我了解这里发生了什么的想法.

java authentication spring-mvc spring-security

102
推荐指数
5
解决办法
16万
查看次数

使用JWT进行跨域身份验证的单点登录流程

网上有很多关于使用JWT(Json Web Token)进行身份验证的信息.但是,在多域环境中使用JWT令牌作为单点登录解决方案时,我仍然没有找到明确的解释.

我在一家公司工作,该公司在不同的主机上有很多站点.我们使用example1.com和example2.com.我们需要一个单点登录解决方案,这意味着如果用户在example1.com上进行身份验证,我们希望他也可以自动在example2.com上进行身份验证.

使用OpenId Connect流程,我了解想要在example1.com上进行身份验证的用户将首先被重定向到身份验证服务器(或OP"OpenId Provider").用户在该服务器上进行身份验证,然后使用签名的JWT令牌将其重定向回原始example1.com站点.(我知道有另一个流程返回一个中间令牌,以后可以将其交换为真正的JWT令牌,但我不认为这对我们来说是必需的)...

所以现在用户回到example1.com并进行身份验证!他可以发出请求,在Authentication标头中传递JWT令牌,服务器能够验证签名的JWT,因此能够识别用户.太好了!

第一个问题:

如何将JWT令牌存储在客户端上?还有很多关于此的信息,人们似乎同意使用Web Storage是走的路而不是好的旧路cookies.我们希望JWT在浏览器重启之间保持一致,所以让我们使用Local Storage,而不是Session Storage......

现在用户可以重新启动他的浏览器,只要JWT令牌没有过期,他仍然会在example1.com上进行身份验证!

此外,如果example1.com需要向我们的另一个域发出Ajax请求,我理解配置CORS会允许这样做.但我们的主要用例不是跨域请求,它有一个单点登录解决方案!

因此,主要问题是:

现在,流程应该是什么,如果用户访问example2.com并且我们希望他使用他已经拥有的JWT令牌进行身份验证?Local Storage似乎不允许跨域访问,所以此时浏览器无法读取JWT令牌以向example2.com发出请求!

应该 :

  • 用户是否会再次重定向到身份验证服务器?当用户对example1.com进行身份验证时, 身份验证服务器 …

authentication single-sign-on jwt openid-connect

101
推荐指数
3
解决办法
4万
查看次数

我应该在将密码发送到服务器端之前对其进行哈希处理吗?

我注意到大多数站点通过HTTPS将密码作为纯文本发送到服务器.有没有什么优势,而不是我发送密码的哈希到服务器?会更安全吗?

security authentication https login

100
推荐指数
6
解决办法
5万
查看次数

Git Clone来自GitHub,通过https进行双因素身份验证

我最近开始在GitHub上使用双因素身份验证,我现在无法以通常的方式在私有存储库上使用git over https:

peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/[...]/MyPrivateRepo/'
Run Code Online (Sandbox Code Playgroud)

如果我禁用双因素身份验证,我可以像以前一样使用它:

peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com': 
remote: Counting objects: 147, done.
remote: Total 147 (delta 0), reused 0 (delta 0), pack-reused 147
Receiving objects: 100% (147/147), 22.70 KiB | 0 bytes/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用SSH,一切正常,但有没有办法可以保持双因素身份验证,同时仍然能够通过HTTPS使用GitHub,例如通过发送带有我请求的身份验证令牌?

git authentication github

100
推荐指数
5
解决办法
7万
查看次数

Python中的Google身份验证器实现

我正在尝试使用可以使用Google身份验证器应用程序生成的一次性密码.

Google身份验证器的功能

基本上,Google身份验证器实现了两种类型的密码:

  • HOTP - 基于HMAC的一次性密码,这意味着密码随每次呼叫而改变,符合RFC4226,并且
  • TOTP - 基于时间的一次性密码,每30秒更改一次(据我所知).

Google身份验证器也可在此处以开源形式提供:code.google.com/p/google-authenticator

目前的代码

我一直在寻找能够生成HOTP和TOTP密码的现有解决方案,但没有找到太多.我的代码是负责生成HOTP的以下代码段:

import hmac, base64, struct, hashlib, time

def get_token(secret, digest_mode=hashlib.sha1, intervals_no=None):
    if intervals_no == None:
        intervals_no = int(time.time()) // 30
    key = base64.b32decode(secret)
    msg = struct.pack(">Q", intervals_no)
    h = hmac.new(key, msg, digest_mode).digest()
    o = ord(h[19]) & 15
    h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
    return h
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,我使用上述代码生成的密码与使用适用于Android的Google身份验证器应用生成的密码不同.即使我尝试了多个intervals_no值(恰好是前10000个,开头intervals_no = 0),与secretGA应用程序中提供的密钥相等.

我有问题

我的问题是:

  1. 我究竟做错了什么?
  2. 如何在Python中生成HOTP和/或TOTP?
  3. 是否有任何现有的Python库?

总结一下:请给我任何有助于我在Python代码中实现Google身份验证器身份验证的线索.

python security authentication one-time-password google-authenticator

99
推荐指数
2
解决办法
4万
查看次数

AngularJS:在单页​​面应用程序中使用身份验证的基本示例

我是AngularJS的新手并完成了他们的教程,并对此感到满意.

我有一个准备好项目的后端,每个REST端点都需要进行身份验证.

我想做什么
.)我希望我的项目有一个页面http://myproject.com.
b.)一旦用户点击浏览器中的URL,基于用户是否登录,他将在同一URL下显示主页/视图或登录页面/视图http://myproject.com.
c.)如果用户未登录,则填写表单并且服务器设置USER_TOKEN会话,因此对端点的所有进一步请求将基于以下内容进行身份验证USER_TOKEN

我的困惑
a.)如何使用AngularJS处理客户端身份验证?我看到了这里,并在这里,但不知道如何使用它们
湾)我怎么能提出了基于用户不同的看法,如果用户在或不符合相同的URL登录http://myproject.com

我第一次使用angular.js,真的很困惑如何开始.非常感谢任何建议和/或资源.

javascript authentication login angularjs

99
推荐指数
3
解决办法
18万
查看次数

Symfony 2:如何检查用户是否未在模板中登录?

在Symfony 2模板(使用Twig)中,如何有效地检查用户是否未登录?

我不想用ROLE支票.我想要一种直接的方法来检查用户是否未登录.

我知道app.user.username与anon作品相比,但这对我来说感觉不对.

authentication symfony twig symfony-2.1

98
推荐指数
2
解决办法
8万
查看次数