标签: http-authentication

Flex 3 - 如何支持HTTP身份验证URLRequest?

我有一个Flex文件上传脚本,它使用URLRequest将文件上传到服务器.我想添加对http身份验证(服务器上受密码保护的目录)的支持,但我不知道如何实现这一点 - 我假设我需要以某种方式扩展类,但是如何让我有点迷失.

我试图修改以下内容(用URLRequest替换HTTPService),但这不起作用.

private function authAndSend(service:HTTPService):void{        
   var encoder:Base64Encoder = new Base64Encoder();        
   encoder.encode("someusername:somepassword");        
   service.headers = {Authorization:"Basic " + encoder.toString()};
   service.send();
}
Run Code Online (Sandbox Code Playgroud)

我应该指出,在ActionScript/Flex方面我并不知情,尽管我已经设法成功地修改了上传脚本.

[编辑] - 根据下面的答案,这里是我的进度的更新,虽然我仍然无法让这个工作:

谢谢您的帮助.我试图实现你的代码,但我没有运气.

我在处理HTTP身份验证位置时遇到的一般行为是,IE7一切都很好,但在Firefox中,当我尝试将文件上传到服务器时,它会显示一个HTTP身份验证提示 - 即使给出了正确的详细信息,也只是停顿上传过程.

我相信IE7正常的原因在于浏览器和Flash组件共享的会话/身份验证信息 - 但是,在Firefox中并非如此,我遇到了上述行为.

这是我更新的上传功能,包含您的更改:

private function pergress():void 
{
if (fileCollection.length == 0) 
  {
  var urlString:String = "upload_process.php?folder="+folderId+"&type="+uploadType+"&feid="+formElementId+"&filetotal="+fileTotal;
  if (ExternalInterface.available) 
    {
    ExternalInterface.call("uploadComplete", urlString);
    }
  }
if (fileCollection.length > 0) 
  {
  fileTotal++;
  var urlRequest:URLRequest = new URLRequest("upload_file.php?folder="+folderId+"&type="+uploadType+"&feid="+formElementId+"&obfuscate="+obfuscateHash+"&sessidpass="+sessionPass);
  urlRequest.method = URLRequestMethod.POST;
  urlRequest.data = new URLVariables("name=Bryn+Jones");
  var encoder:Base64Encoder = new Base64Encoder();
  encoder.encode("testuser:testpass");
  var credsHeader:URLRequestHeader = …
Run Code Online (Sandbox Code Playgroud)

apache-flex base64 actionscript urlrequest http-authentication

10
推荐指数
1
解决办法
3万
查看次数

设置mod_proxy以将http身份验证传递给服务器

我将Apache配置为代理服务器时遇到问题.目前,我通过端口80使用domain.net访问MS Sharepoint安装.在能够使用它之前,我必须输入用户名和密码.到现在为止还挺好.

现在我希望能够通过子域web.domain.net访问网站.托管此站点的服务器在内部网络中的另一台计算机上运行.我想出的解决方案是将端口80重定向到运行apache的计算机以服务新网站,并将对sharepoint的任何请求代理到sharepoint服务器.

到目前为止,我启用了httpd.conf中的所有代理模块,并添加了一个虚拟主机. 编辑:第一次回复后更新配置.

<VirtualHost *:80>
    ServerName domain.net

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyErrorOverride On
    ProxyPass   /   http://sharepoint/
    ProxyPassReverse   /   http://sharepoint/

    <Location />
        AuthType basic
        AuthBasicAuthoritative Off
        SetEnv proxy-chain-auth On
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这有效.输入domain.net会将我转发给sharepoint服务器.现在出现了实际问题.sharepoint要求我提供我的凭据.但是当我输入它们时,登录表单会一直弹出,因为我输入了不正确的用户名和密码.

似乎凭证不会通过代理转发到sharepoint.

你能给我任何建议如何解决这个问题吗?是否可以使用mod_proxy执行此操作?

apache proxy credentials http-authentication

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

在不是100%AJAX的Ajax应用程序中使用HTTP身份验证的最佳方法是什么

我有一个标准的HTML登录页面,我宁愿使用它而不是浏览器提供的标准HTTP身份验证弹出窗口.今天,我在登录后使用会话cookie跟踪会话,但我希望无状态并且每次都通过HTTP身份验证.我正在尝试的Web服务已经支持这一点,所以这是一个仅限浏览器的问题.

在jQuery中添加身份验证凭据是微不足道的,但我不知道如何保留它们.如果您从登录页面(jsp)转到主页(另一个jsp),您显然不会保留登录页面中的用户名和密码字段.我知道如果您从弹出窗口输入它们,某些浏览器将存储您的HTTP身份验证凭据,但我不知道它们是否在使用XHRRequest时被存储.如果他们这样做,浏览器之间是否有很多一致性?

此外,用户也需要能够"退出"应用程序.如果浏览器存储身份验证凭据,是否有办法使用JavaScript清除它们.

我觉得我不能成为第一个试图解决这个问题的人.是否有一些jQuery插件或已经处理过的东西?或者根本不可能做我想做的事情?

ajax jquery xmlhttprequest http-authentication stateless-session

10
推荐指数
1
解决办法
5243
查看次数

AWS S3托管站点的基本HTTP身份验证,类似于.htaccess

我在Amazon S3上托管了一个静态HTML站点.

理想情况下,我希望能够以与.htaccess/.htpasswd文件相同的方式限制对暂存站点的访问.

我知道存储桶策略可以用来限制访问(我已经使用了一个来公开访问存储桶内容),但是我看不到任何限制访问的方法.

在理想的情况下,我想要一个身份验证提示 - 但将一个令牌附加到URL也可以.

html amazon-s3 http-authentication amazon-web-services

10
推荐指数
2
解决办法
8383
查看次数

Jersey/Grizzly的基本HTTP身份验证

我使用JAX-RS,Jersey和Grizzly编写了一个简单的REST服务器.这就是我启动服务器的方式:

URI baseUri = UriBuilder.fromUri("http://localhost/api")
                        .port(8081)
                        .build();

ResourceConfig rc = new PackagesResourceConfig("se.aioobe.resources");
HttpServer httpServer = GrizzlyServerFactory.createHttpServer(baseUri, rc);
Run Code Online (Sandbox Code Playgroud)

现在我需要使用基本HTTP身份验证来保护资源,我无法弄清楚如何执行此操作.

我可以从Grizzly切换到例如Jetty,如果它更容易让它工作,但我真的很重视Grizzly提供的简单配置/启动.

我已经阅读了很多教程.他们都提到了web.xml,但在我目前的配置中我没有.(我是否需要添加一个用于HTTP身份验证?)我发现了以下 问题,它们都没有任何帮助:-(

(此时不需要SSL.此时的身份验证只是为了防止公众在我们的测试版中偷看.)

TL; DR:如何向Jersey/Grizzly webapp添加基本HTTP身份验证?

java jax-rs jersey http-authentication grizzly

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

Java:使用HTTPBasic身份验证获取URL

我正在做一些简单的HTTP身份验证,我得到了一个

java.lang.IllegalArgumentException: Illegal character(s) in message header value: Basic OGU0ZTc5ODBk(...trimmed from 76 chars...)
(...more password data...)
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我有一个非常长的用户名和密码,编码器包含\n76个字符.有什么方法可以解决这个问题吗?该URL仅支持HTTP Basic Auth.

这是我的代码:

private class UserPassAuthenticator extends Authenticator {
    String user;
    String pass;
    public UserPassAuthenticator(String user, String pass) {
        this.user = user;
        this.pass = pass;
    }

    // This method is called when a password-protected URL is accessed
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(user, pass.toCharArray());
    }
}

private String fetch(StoreAccount account, String path) throws IOException {
    Authenticator.setDefault(new UserPassAuthenticator(account.getCredentials().getLogin(), account.getCredentials().getPassword()));

    URL url …
Run Code Online (Sandbox Code Playgroud)

java authentication url http http-authentication

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

使用Jersey Client进行摘要式身份验证

我已经用Jersey Server 编写了一个REST Web服务(完全是摇滚!).我现在正在使用Jersey Client开发它的客户端部分.

在服务器端,我选择了DIGEST身份验证,因为我个人认为BASIC身份验证是一种异端,应该在我们的头脑中标记为"已弃用".

不幸的是,我在客户端看不到任何Digest身份验证的支持.对于BASIC身份验证,可以执行以下操作:

client.addFilter(
    new HTTPBasicAuthFilter(
        user, 
        password));
Run Code Online (Sandbox Code Playgroud)

但我看不到" HTTPDigestAuthFilter "对应物.我错过了什么吗?

谢谢你的帮助,

拉斐尔

java jersey http-authentication

9
推荐指数
1
解决办法
5018
查看次数

使用证书身份验证访问Web服务和HTTP接口

这是我第一次使用证书身份验证.商业合作伙伴公开两种服务,XML Web服务和HTTP服务.我必须使用.NET客户端访问它们.

我试过了什么

0.设置环境

我已使用certmgr.exe在本地计算机(win 7 professional)中安装了SSLCACertificates(在root和两个中间)和客户端证书.

1.对于Web服务

  • 我有客户证书(der).
  • 该服务将通过.NET代理使用.

这是代码:

OrderWSService proxy = new OrderWSService();
string CertFile = "ClientCert_DER.cer";

proxy.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate(CertFile));
orderTrackingTO ot = new orderTrackingTO() { order_id = "80", tracking_id = "82", status = stateOrderType.IN_PREPARATION };
resultResponseTO res = proxy.insertOrderTracking(ot);
Run Code Online (Sandbox Code Playgroud)

最后声明中报告的例外:The request failed with an empty response.

2.对于HTTP接口

  • 它是我必须通过POST方法调用的HTTPS接口.
  • HTTPS请求将使用HTTPWebRequest从.NET客户端发送.

这是代码:

string PostData = "MyPostData";

//setting the request
HttpWebRequest req;
req = (HttpWebRequest)HttpWebRequest.Create(url);
req.UserAgent = "MyUserAgent";
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate(CertFile, "MyPassword")); 

//setting …
Run Code Online (Sandbox Code Playgroud)

c# authentication web-services certificate http-authentication

9
推荐指数
1
解决办法
2万
查看次数

如何构建具有可靠后端的完全可扩展的SPA

在过去的几周里,我一直在努力使用Angular,Node,TDD,Heroku,Amazon S3等.试图更好地了解如何构建具有坚固后端的完全可扩展的SPA,与grunt,bower,避风港合作还没有使用Jasmine在TDD中浸泡我的脚趾,虽然我知道如何通过Karma进行测试,这可能是我的下一步.

有一件事是肯定的:这是很多信息


关于使用所有这些技术的问题/理由.

首先,我玩了

并阅读了许多帖子等.

我发现NG Boilerplate是最符合逻辑的结构(就我对这些事情的理解而言).

作为一个演示项目(从一些非常小的东西演变而来)我想使用以下方法制作单页CRUD应用程序:

  • NodeJS作为后端
  • Express作为Web应用程序框架
  • NG Boilerplate作为客户
  • 该应用程序部署到Heroku
  • MongoDB for DB
  • Amazon S3用于动态存储

现在我想使用Angular-Apps的(https://github.com/angular-app/angular-app)服务器作为我的NGBoilerplate kickstarter的后端

我想知道如何:


Long Story Short,没有我提出大量问题,有人可以详细描述这样一个应用程序的工作流程吗?获取会话,登录,访问编辑内容,将快速路线绑定到角度路线(例如,管理员只能访问X路线)等.##

我脑子里有一个很大的模糊:).

javascript http-authentication node.js angularjs

9
推荐指数
1
解决办法
4228
查看次数

抑制浏览器的身份验证对话框

我很抱歉已经有类似的问题,但我想更广泛地问它.

有没有办法在客户端确定Web应用程序,如果请求资源将返回401状态代码并导致浏览器显示丑陋的身份验证对话框?

或者,是否有任何方法可以在Flash中加载mp3音频资源,在401状态代码的情况下无法无形地失败,而不是让浏览器显示丑陋的对话框?

如果我设置了URLRequest对象的"authenticate"属性,但此属性不在Flash运行时中,Adobe Air运行时将禁止身份验证.任何适用于客户端的解决方案都可以.XMLHttpRequest不太可能有效,因为问题中的资源将位于不同的域中.

隐藏失败非常重要,因为应用程序将包含许多要尝试的音频资源的列表,当有许多其他可用时,打扰用户尝试对其进行身份验证是没有意义的.解决方案在客户端上运行非常重要,因为有问题的mp3来自我控制之外的各种服务器.

javascript flash http-authentication suppress

8
推荐指数
1
解决办法
778
查看次数