我有一个应用程序是服务器上的Node + Express + Passport和客户端上的jQuery + Backbone.js.客户端在URL中使用哈希标记,但是对于某些功能,用户登录是很重要的.
我希望可以通过URL访问该应用,例如http://mydomain.com/app#cone/waffle/flavor/mint/toppings/sprinkles
:
/login
则会转到然后转到请求的URL继这篇SO帖子,关于Node.js Passport的Google策略的自定义returnUrl之后 ,我就这样了
它似乎在登录后从重定向上的原始URL中删除哈希参数.
有什么方法可以在将哈希参数重定向到原始目标时保留哈希参数吗?
从这篇文章中,从请求URL获取哈希参数我得到了哈希标签在服务器上不可用的想法,这是使用哈希标签的全部要点.
所以我怀疑这是不可能的.也许以某种方式在本地缓存params并在重定向上检索它们,对[original URL minus hastags] + #use-cached-params
吗?
我们正在开发SPA - 完整的客户端基础javascript应用程序,需要对用户进行身份验证才能访问内部.
正如我从搜索中发现的那样,我们可以将我们的身份验证机制外包并使用Google帐户.我从这个网站上了解到 https://developers.google.com/accounts/docs/OAuth2Login - 如何处理Google API和身份验证机制.
简而言之,我们需要:
这个描述得很好,我理解它并有一些JS代码来实现它.
我不明白.
我有一个应用程序与它的私人数据.我想使用用户的电子邮件作为登录或用户ID(无论如何调用它)来访问应用程序的内部,例如用户创建的任务,用户的配置文件等.因此,在我的SPA中显示用户创建的任务我需要用户的电子邮件查询数据库.
我想象下一个场景:
Login with Google
按钮Logout
我们清除所有访问数据我应该在哪里坚持这些数据?
如果Forms Authentication
我理解我们将登录/密码传递给服务器,如果它们与数据库匹配,我们创建Forms Ticket
并将其存储在cookie中.
谷歌的身份验证是否有类似的案例?如果我将用户的电子邮件存储在cookie中,我认为出于安全原因这不是很好.如果我要保存令牌 - 我不确定为什么需要它以及如何在我的SPA中使用它,我在身份验证后没有使用任何Google API.
您是否有任何示例案例我们如何在类似案例中构建我们的流程?
谢谢.
authentication oauth-2.0 single-page-application google-oauth
我需要在我的动作过滤器中访问当前登录的用户.身份由DelegatingHandler
进一步的执行链设置.
我可以访问当前IPrincipal
使用HttpContext.Current.User
.
到目前为止,我避免使用HttpContext.Current
,因为在我看来是坏风格.首先,你的代码只有在IIS中托管时才能工作,其次它包含一个System.Web
我认为不会受到伤害的引用,但System.Net.Http
如果可能的话,我更愿意坚持使用.
依靠好的旧" HttpContext
" 感觉不对.
有没有其他方法可以访问用户的身份ActionFilter
?或者,HttpContext
如果您不打算运行自托管应用程序,是否可以使用?
authentication iprincipal actionfilterattribute asp.net-web-api
我需要通过Java API从远程桌面使用HDFS集群.一切正常,直到写访问.如果我正在尝试创建任何文件,我会收到访问权限异常.路径看起来很好,但异常表示我的远程桌面用户名,这当然不是我需要访问所需的HDFS目录.
问题是: - 有没有办法在Java API中使用"简单"身份验证来表示不同的用户名? - 您能否在Java API示例中更好地解释hadoop/HDFS中的身份验证/授权方案?
是的,我已经知道'whoami'在这种情况下可能会使用shell别名超载但我宁愿避免像这样的解决方案.此处的具体细节是我不喜欢通过SSH和脚本使用管道等一些技巧.我想使用Java API执行所有操作.先感谢您.
我很高兴连接到HDFS并列出我的主目录:
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hadoop:8020");
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
RemoteIterator<LocatedFileStatus> ri = fs.listFiles(fs.getHomeDirectory(), false);
while (ri.hasNext()) {
LocatedFileStatus lfs = ri.next();
log.debug(lfs.getPath().toString());
}
fs.close();
Run Code Online (Sandbox Code Playgroud)
我现在想要做的是以特定用户身份连接(而不是whois用户).有谁知道你如何指定你连接的用户?
在Symfony2
我建立了一个内联网.它目前使用FOSUserBundle
和LDAP bundle
来记录用户,我想添加从Windows会话中登录用户的功能.
我找到了 PHP 的NTLM脚本及其更新版本,但我无法将它们合并到Symfony2中.
我还发现了一个用于Symfony2的NTLM软件包,但它是为旧版本的Symfony编写的,并且不再维护.我无法重写它并让它工作.
我的问题是; 除了已经存在的LDAP
功能之外,我怎样才能在Symfony2-app中自动从他们的Windows会话登录用户?什么是最好最简单的方法?
在过去的几天里,我一直在用一个简单的应用程序想法,因为我正在尝试自学REST基础知识.
到目前为止,我已经认识到,实现这一目标的最佳方式是使用亚马逊使用的HMAC.
我最关心的是我究竟如何对用户进行身份验证并为他们提供私钥,以便他们可以开始签署HMAC?我一直读取用于签名的HMAC私钥不应该通过线路发送过,但后来如何,他们曾经把它摆在首位?
我的想法是这样的,但我不确定这是否有效.
用户数据库表:
users (simplified, this would probably be a private key per client app?)
id (their public key?)
username
password?
privatekey
Run Code Online (Sandbox Code Playgroud)
假设一个HTML/JS客户端将向用户呈现一个传统的登录页面,该页面向API发送POST,如下所示:
https://example.com/myapp/api/v1/authenticate.json
POST: username / password
Run Code Online (Sandbox Code Playgroud)
那也会回来
404:User not found
200:{ "id" : <id>, "privatekey": <privatekey> }
Run Code Online (Sandbox Code Playgroud)
客户端然后将该密钥存储在某个地方(本地存储/ cookie是安全的地方吗?)并使用它来签署看起来像这样的其他请求
GET https://example.com/myapp/api/v1/something/?key1=value1&publickey={theirID}&hmac={hmac signature of the request using their private key}
Run Code Online (Sandbox Code Playgroud)
然后,服务器将检查公钥,检索关联的私钥并重建HMAC签名,如果它们匹配,则我们有经过身份验证的请求处理它.
我说得对吗?如果我仍然需要像我的例子中那样的密码,我不确定我是否理解私钥的作用,所以有些东西告诉我,我可能错了.
我能够显示SPRING_SECURITY_LAST_EXCEPTION.message("坏凭证"),当用户尝试使用不正确的凭据或用户登录是由于某种原因被禁用.
我想为用户被禁用的情况显示自定义消息,而不是显示"Bad Credentials",而是说"你已被禁用......等等,等等......".我怎么做?
我正在使用UserDetailsService在spring security中提供用户名/密码.
我对OAuth相关主题有一些困惑,我希望有人可以帮助我清理它们:)在任何我不合适的地方随意纠正我.
所以,假设我的网络公司在不同的域上运行了许多网站:
假设这些是带有一些社交性的电子商务网站,因此存在具有各种存储数据点的用户帐户.所以我的公司(我们称之为ACME电子商务)已经为不同的客户创建并管理所有这些网站.
现在,我们决定为所有电子商务网站建立一个中央帐户是很方便的; 其好处包括通过允许客户使用现有帐户登录任何站点来减少摩擦,以及集中信息以提高营销准确性并减少与客户的过多沟通.输入OAuth!
据我所知,OAuth是一种身份验证和授权标准.身份验证是"登录",授权是"你可以进行这些API调用",简而言之,对吗?让我们从身份验证开始:
认证!
这里的想法是你去socks.com,当你通常登录时,有一个"使用ACME ID登录"按钮,以及"登录到Socks.com".你到处都可以看到:登录Facebook,登录谷歌等等.所以我们有"使用ACME ID登录".
当用户点击"使用ACME ID登录"时,socks.com直接从ACME的OAuth服务器请求并接收未经授权的请求令牌,然后将用户的浏览器重定向到ACME的OAuth站点.在那里,用户插入其ACME ID帐户的用户名和密码,ACME OAuth授权请求令牌并通过重定向URL将其返回到socks.com.
所以在这一点上,Socks.com知道用户登录了ACME ID.如果Socks.com想要查询来自ACME资源API的信息,它会将其授权请求令牌交换为访问令牌然后进行调用,但我们只是在谈论身份验证,并且用户已经过身份验证.对?
假设我有这个权利,即使我有点错误,Socks.com在这一点上做了什么?因为在这种情况下,它有自己的用户数据库,它是否将中央OAuth身份验证与其自己的数据库同步?Socks.com现在知道joe@blow.com已经登录,它会在数据库中查询该电子邮件地址,以获取他的购买历史记录和最后购物车内容?它为joe维护一个会话,如果该会话到期,那么他必须再次使用他的ACME ID进行身份验证?
我知道Spotify会做这样的事情; 他们"登录Facebook".如果我选择此选项,则会在Facebook域上弹出一个带有登录窗口的小浏览器窗口.我登录,弹出窗口关闭,Spotify显示我已登录...我的Facebook电子邮件地址,以及一个由8个左右的随机数组成的帐户名.这似乎是Spotify看到我通过Facebook的OAuth服务器进行身份验证,然后在他们自己的系统中为我生成一个新帐户.随后的Facebook-OAuth身份验证/登录会让我每次都进入同一个Spotify帐户.
什么,如果有的话,我在这里有错吗?
因此,通过使用ACME ID的中央身份验证设置,我们可以允许用户使用相同的ID登录socks.com,boats.com和cakes.com,我们将在每个位置礼貌地为他们创建帐户.这是减少摩擦力的行动,但地址和信用卡数据仍然是分开存储的,因此我们没有获得集中化的好处.但是,这超出了身份验证,我们正在授权!
授权!
因此,我们进行了一些帐户数据重组,并将所有客户的地址和信用卡数据移动到其中央ACME ID帐户中.我们建立了一个API来请求和修改此信息.现在,当cakes.com使用ACME ID进行身份验证并获取其授权请求令牌时,该令牌将交换到ACME OAuth服务器以获取API的访问令牌.(这是存储在服务器端,存储在用户的会话数据中.)
现在,当用户进入结帐的cakes.com,我们可以进行API调用ACME资源服务器,传递ACME ID的用户名,来获取客户的地址的数组,然后用它来填充网页.嘿,这是很好的服务!Cakes.com 由OAuth程序授权执行此类操作.
我有一切吗?
边缘案例!
上面带有中央OAuth服务器的电子商务网站的实现非常明确,但是有些"边缘情况"可能会以不同的方式实现:
1)没有分布式用户帐户
如果我想强制socks.com,boats.com和cakes.com的所有用户仅使用ACME ID登录,该怎么办?也许在每个站点都有一个"用户帐户",包括购买数据和地址数据等,带有相关的用户名,但没有密码,也没有实际的登录机制.一旦ACME ID被验证,会话就被标记为"登录".
或者,也许所有信息(如购买历史记录,地址和CC#)都会汇总到ACME资源端点中,而不会在卫星电子商务网站上存储有关客户的信息?那么,卫星基本上是奴隶,使用ACME OAuth作为远程数据库.然后,由于购买历史是集中的,您或多或少需要集中您的项目,然后它可能会归结为"什么不集中?" 和"为什么有单独的网站" - 除了他们需要分开.
那么,这有什么好处吗?
2)用于移动应用程序的UI-Less Web API
假设您正在构建iOS/Android等.应用程序称为Horses,您需要在云端存储有关您的用户的一些信息,特别是他们真正喜欢的马匹.尽管有人认为任何人都可能因为马匹与袜子,船只和蛋糕无关,但您希望允许您的用户使用他们的ACME ID以及您发明的马匹ID进行登录.
现在,您基本上采取了在www.horses.com域上拥有卫星用户帐户系统的路线,并可选择允许此人使用ACME ID登录并慷慨地创建一个horses.com帐户,以便他们存储他们的horses.com相关数据.很标准; 一个区别是你实际上并不需要建立一个网站,它只是一个API.
但是,如果您只想允许ACME ID作为登录,没有horses.com帐户,该怎么办?因此,当您进入登录状态时,您的horses.com API将启动与ACME OAuth的OAuth舞蹈,进行身份验证,然后向应用程序提供访问令牌(针对horses.com).该访问令牌将用于根据用户在应用中喜欢的马匹向horses.com发出读写API调用.我在这里是正确的吗?
3)访问多个站点的Central Auth
我们采取这种设置:ACME ID包含用户名,密码,电子邮件,信用卡和账单信息.Socks.com,boats.com和cakes.com有购买历史记录,以及关于这些人在这些网站上做过的与袜子相关,船相关或蛋糕相关(分别)的事情的社交信息.
现在我们想要创建一个使用ACME ID进行身份验证的移动应用程序,并且可以从ACME ID的Resource API(用于CC和计费数据)以及使用ACME ID进行身份验证的每个站点提取信息.通过这种方式,我们可以很好地融合袜子,船只和蛋糕,然后我们可以为客户收取费用!(你明白了.)
那么......怎么可能呢?
谢谢阅读!
我有一个很好的搜索,但还没有找到一个答案,可以让我纠正这个问题.
我正在尝试从MS Access连接到远程服务器上的MySQL 5.2数据库.
我已经设置了一个用户帐户,该帐户在相关表格上具有选择,插入,更新,删除权限.但是,当我尝试连接此帐户时,我得到:
连接失败[HY000] [MySQL] [ODBC 5.2(w)驱动程序]使用旧(4.1.1之前)身份验证协议拒绝连接(启用客户端选项'secure_auth')
当我尝试使用root帐户访问时,连接正常工作,这让我想知道为什么它会返回一个身份验证协议错误,因为正在使用相同的驱动程序 - 所有改变的是使用的帐户 - 所以肯定是通过密码传递密码相同的认证协议?为什么一个用户名/密码组合会返回协议错误而不是另一个?
看来这个错误很常见,但我还没有找到一个明确的解决方案.你能帮我吗?
authentication ×10
hadoop ×2
hdfs ×2
java ×2
security ×2
api ×1
express ×1
google-oauth ×1
iprincipal ×1
login ×1
ms-access ×1
mysql ×1
node.js ×1
ntlm ×1
oauth ×1
oauth-2.0 ×1
odbc ×1
passport.js ×1
rest ×1
spring ×1
symfony ×1
web ×1
web-services ×1
windows ×1