Tag: authentication

如何validation域凭据?

我想validation对域控制器的一组凭据。 例如: Username: STACKOVERFLOW\joel Password: splotchy 方法1.用模拟查询Active Directory 很多人build议查询Active Directory的东西。 如果抛出exception,那么你知道凭据是无效的 – 正如在这个stackoverflow问题中所build议的。 然而,这种方法有一些严重的缺陷 : 您不仅要validation域帐户,还要进行隐式授权检查。 也就是说,您正在使用模拟令牌从AD读取属性。 如果否则有效的帐户没有权利从AD读取? 默认情况下,所有用户都具有读取访问权限,但可以将域策略设置为禁用受限帐户(和/或组)的访问权限。 针对AD的绑定具有严重开销,AD架构caching必须在客户端(DirectoryServices使用的ADSI提供程序中的ADSIcaching)中加载。 这既是networking,也是AD服务器,资源消耗大,而且对于像validation用户帐户这样的简单操作来说太昂贵了。 对于非例外情况,您依赖exception失败,并假设这意味着无效的用户名和密码。 其他问题(如networking故障,AD连接故障,内存分配错误等)则被误解为authentication失败。 方法2. LogonUser Win32 API 其他人build议使用LogonUser() API函数。 这听起来不错,但不幸的是,主叫用户有时需要一个通常只给予操作系统本身的权限: 调用LogonUser的进程需要SE_TCB_NAME特权。 如果调用进程没有此权限,LogonUser将失败,并且GetLastError返回ERROR_PRIVILEGE_NOT_HELD。 在某些情况下,调用LogonUser的进程也必须启用SE_CHANGE_NOTIFY_NAME权限; 否则,LogonUser失败,GetLastError返回ERROR_ACCESS_DENIED。 作为pipe理员组成员的本地系统帐户或帐户不需要此权限。 默认情况下,所有用户都启用了SE_CHANGE_NOTIFY_NAME,但是一些pipe理员可能会禁用所有用户。 正如微软在一篇知识库文章中指出的那样,将“ 行为作为操作系统的一部分 ”特权发出是不是你想做的事情: …正在调用LogonUser的进程必须具有SE_TCB_NAME特权(在用户pipe理器中,这是“ 作为操作系统的一部分 ”)。 SE_TCB_NAME特权非常强大, 不应该被授予任何任意用户,以便他们可以运行需要validation凭据的应用程序 。 此外,如果指定空密码,则对LogonUser()的调用将失败。 什么是validation一组域证书的正确方法? 我碰巧从托pipe代码调用,但这是一个一般的Windows问题。 可以假定客户安装了.NET Framework 2.0。

我可以使用NSURLCredentialStorage进行HTTP基本authentication吗?

我有一个可用类,我想用来连接到我正在build立的REST风格的Web服务。 我已经决定在我的PHP后端使用HTTP基本身份validation,就像这样… <?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); //Stuff that users will see if they click 'Cancel' exit; } else { //Validation Code echo "You entered info."; } ?> 在这一点上,我正在使用一个同步的NSURLConnection,我知道苹果文档状态有较less的authentication支持。 但是甚至可以呢? 我可以做cookievalidation非常容易sANSURLProtectionSpaces或NSURLCredentials或任何身份validation类。 另外,是否有任何资源,我可以阅读更多关于Cocoaauthentication类? 谢谢。 更新:mikeabdullahuk你提供的代码(第二个例子)与我写的代码几乎相同。 我做了一些更多的调查,发现NSURLConnection正在返回一个错误… Error Domain=NSURLErrorDomain Code=-1012 UserInfo=0x1a5170 "Operation could not be completed. (NSURLErrorDomain error -1012.)" 该代码对应于NSURLErrorUserCancelledAuthentication。 所以显然我的代码没有访问NSURLCredentialStorage,而是取消了身份validation。 […]

如何构build一个RESTful API?

问题是这样的:我有一个运行在PHP服务器上的Web应用程序。 我想为它构build一个REST API。 我做了一些研究,我发现REST api使用HTTP方法(GET,POST …)为某些URI提供了一个authentication密钥(不一定),信息以HTTP或XML响应的forms呈现(我宁愿JSON)。 我的问题是: 作为应用程序的开发者,我如何构build这些URI? 我是否需要在该URI编写一个PHP代码? 我如何构buildJSON对象作为响应返回?

允许web.config中的单个文件夹的匿名身份validation?

所以这里是这种情况,我有一个Asp.Net应用程序使用自定义身份validation和成员资格提供程序,但我们需要完全匿名访问(即)到应用程序中的特定文件夹。 在IISpipe理器中,您可以设置文件夹的身份validation模式,但是这些设置保存在C:\Windows\System32\inetsrv\config\applicationHost.config文件中,如此处所述 为了使安装更容易,如果我可以在我的web.config中设置它,但是经过几次尝试,我认为这可能是不可能的。 有谁知道吗? 非常感谢

Symfony2扩展DefaultAuthenticationSuccessHandler

我想在authentication成功之后改变默认的authentication过程。 我做了一个服务,authentication成功后,redirect之前调用。 namespace Pkr\BlogUserBundle\Handler; use Doctrine\ORM\EntityManager; use Pkr\BlogUserBundle\Service\Encoder\WpTransitionalEncoder; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Log\LoggerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Http\Authentication\Response; class AuthenticationSuccessHandler implements AuthenticationSuccessHandlerInterface { protected $entityManager = null; protected $logger = null; protected $encoder = null; public function __construct(EntityManager $entityManager, LoggerInterface $logger, WpTransitionalEncoder $encoder) { $this->entityManager = $entityManager; $this->logger = $logger; $this->encoder = $encoder; } /** […]

ASP.NET MVC表单身份validation+授权属性+简单angular色

我试图添加简单的身份validation和授权到ASP.NET MVC应用程序。 我只是试图添加一些基本的表单身份validationfunction(由于简单和自定义数据库结构) 假设这是我的数据库结构:用户:用户名密码angular色(理想情况下是一些枚举,如果需要的话,string。目前,用户只有一个angular色,但这可能会改变) 高层次的问题:鉴于上述数据库结构,我希望能够做到以下几点: 使用表单身份validation简单login 装饰我的行动:[授权(angular色= {MyRoles.Admin,MyRoles.Member})] 在我的视图中使用angular色(确定在某些部分显示的链接) 目前,我真的很确定的是如何进行身份validation。 之后,我迷路了。 我不知道我在哪一点抓住用户angular色(login,每个授权?)。 由于我的angular色可能不是string,我不知道他们将如何适应与User.IsInRole()。 现在,我在这里问,因为我没有find一个“简单”完成我所需要的。 我看过很多例子。 对于authentication: 我们有简单的用户validation来检查数据库和“SetAuthCookie” 或者我们重写成员提供程序,并在ValidateUser中执行此操作在这两者中,我不确定如何处理我的简单用户angular色,以便它们可以使用:HttpContext.Current.User.IsInRole(“Administrator”)此外,我不知道如何修改这个来处理我的枚举值。 对于授权,我已经看到: 派生AuthorizeAttribute并实现AuthorizeCore或OnAuthorization来处理angular色? 实施IPrincipal? 任何援助将不胜感激。 不过,我担心我可能需要很多细节,因为我没有使用谷歌search似乎符合我需要做的。

Amazon S3直接从客户端浏览器上传文件 – 私钥泄露

我正在实现从客户端机器通过REST API直接上传到Amazon S3,只使用JavaScript,没有任何服务器端代码。 一切正常,但有一件事让我担心… 当我向Amazon S3 REST API发送请求时,我需要签署请求并将签名放入Authentication标头中。 要创build签名,我必须使用我的密钥。 但所有的事情都发生在客户端,所以,密钥可以很容易从页面源显示(即使我混淆/encryption我的来源)。 我该如何处理? 这是一个问题呢? 也许我可以限制特定的私钥使用仅限于来自特定CORS Origin的REST API调用,并且仅限于PUT和POST方法,或者可能只链接到S3和特定存储桶的密钥? 可能有另一种authentication方法? “无服务器”解决scheme是理想的,但我可以考虑涉及一些服务器端处理,不包括上传文件到我的服务器,然后发送到S3。

从所有主机的MySQL根访问

我在远程Ubuntu机器上安装了MySQL服务器。 root用户在mysql.user表中是这样定义的: mysql> SELECT host, user, password FROM user WHERE user = 'root'; +——————+——+——————————————-+ | host | user | password | +——————+——+——————————————-+ | localhost | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | 127.0.0.1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | ::1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | +——————+——+——————————————-+ 我可以使用标准mysql客户端从同一个远程机器命令行界面以root用户访问。 现在,我想允许从互联网上的每个主机的根访问 ,所以我尝试添加以下行(这是除了host列以前的转储的第一行的确切副本): mysql> […]

属性注入

我正在试图注入一个自定义的AuthorizeAttribute的依赖如下: public class UserCanAccessArea : AuthorizeAttribute { readonly IPermissionService permissionService; public UserCanAccessArea() : this(DependencyResolver.Current.GetService<IPermissionService>()) { } public UserCanAccessArea(IPermissionService permissionService) { this.permissionService = permissionService; } protected override bool AuthorizeCore(HttpContextBase httpContext) { string AreaID = httpContext.Request.RequestContext.RouteData.Values["AreaID"] as string; bool isAuthorized = false; if (base.AuthorizeCore(httpContext)) isAuthorized = permissionService.UserCanAccessArea(AreaID, httpContext.User); return isAuthorized; } } 这工作,但似乎是解决作为一个单身的含义,我得到的问题在我的前面描述的问题 我想要做的是使用属性注入,但作为我的属性本身不解决的统一我找不到一种方法来configuration容器来拦截和解决属性。 我已经尝试了以下内容: public class […]

selenium – 其他方式基本authentication比通过url

在我的Selenium-Test (使用chromedriver-2.24 )时,我试图通过基本身份validation访问我的网页,并使用以下语句: WebDriver driver = …; driver.get("http://admin:admin@localhost:8080/project/"); 但Google Chrome在控制台中给了我以下警告: [不推荐使用]子网资源URL包含embedded式凭证的请求(例如https://user:pass@host/ )被阻止。 有关更多详细信息,请参见https://www.chromestatus.com/feature/5669008342777856 。 在被标记的链接被提及支持被丢弃了: 删除子资源请求中对embedded凭据的支持。 (已删除) 我现在的问题是,还有其他的方式来从selenium基本authentication? 注意 :这并没有帮助: 如何在Selenium Webdriver中使用Java处理HTTP Basic Auth头文件?