似乎是apache的地方所以这里去:)
古老的问题:我如何重定向HTTP-> HTTPS,然后只有在HTTPS时才进行身份验证?
哦 - 我想把它大部分放在一个可以包含在多个<directory>或<location>块中的片段中,所以没有基于虚拟主机级别随机路径的重写...
好吧,这就是我所拥有的似乎有用的东西:
在VirtualHost块的顶部
# Set ssl_off environment variable
RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteRule ^ - [E=ssl]
Run Code Online (Sandbox Code Playgroud)
在位置或目录块中
RewriteEngine on
# Case 1 redirect port 80 SSL
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} =80
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301]
AuthType Basic
AuthBasicProvider external
AuthExternal auth_pam
AuthName "My Underpants"
AuthzUnixgroup on
Order Deny,Allow
Deny from all
Allow from env=!ssl
Satisfy any
Require group nice-users
Run Code Online (Sandbox Code Playgroud)
加号
所有这些条件都可以将Require's抽象为一个片段文件,以便在每个位置包含在一行中
它修复了强制每个位置的SSL和身份验证,因此错误的可能性更小
弊
血淋淋的地狱,这很难直观!我所知道的一切可能都很脆弱......
有没有更好的方法(不是我发现的......)?
如果有任何严重的缺陷,将非常欢迎评论:)
如果Apache有一个合理的配置语法与泛型,Aside Life会更容易
<If expression> </ If> …
我有一个使用基本访问身份验证的WCF SOAP服务.SSL没有被使用 - 我理解这里的安全问题.
使用WCFTestClient应用程序我已经通过在服务中临时硬编码用户名和密码来验证服务的工作原理,当Authorization标头不存在时使用.
我现在正在尝试编写一个通过Authorization标头传递凭据的测试应用程序.我在我的测试应用程序中添加了对我的服务的服务引用,但Authorizationhttp请求中没有标题.生成的MyServiceClient类使用System.ServiceModel.ClientBase
在我的测试应用程序中,我将如下设置凭据
MyServiceClient client = new MyServiceClient("BasicHttpBinding_MyService");
client.ClientCredentials.UserName.UserName = "WebServiceUsername";
client.ClientCredentials.UserName.Password = "WebServicepassword";
Run Code Online (Sandbox Code Playgroud)
我也尝试过如下
MyServiceClient client = new MyServiceClient();
ClientCredentials loginCredentials = new ClientCredentials();
loginCredentials.UserName.UserName = "WebServiceUsername";
loginCredentials.UserName.Password = "WebServicepassword";
client.Endpoint.Behaviors.Remove(client.Endpoint.Behaviors.Find<ClientCredentials>());
client.Endpoint.Behaviors.Add(loginCredentials);
Run Code Online (Sandbox Code Playgroud)
服务web.config如下
<services>
<service name="MyService" behaviorConfiguration="MyBehavior" >
<endpoint contract="MyService" binding="basicHttpBinding" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
测试app.config如下
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MyService">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint …Run Code Online (Sandbox Code Playgroud) 我有一个指向JSON输出的URL,但是这个URL需要通过标准的apache弹出认证框输入用户名和密码.我试图从我的rails控制器访问此URL,如下所示:
result = JSON.parse(open("http://user:pass@myurl.com/json").read)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我的控制器顶部有以下内容:
require 'open-uri'
require 'json'
Run Code Online (Sandbox Code Playgroud)
我只是得到一个错误 ArgumentError, userinfo not supported. [RFC3986]
我已经设置了自己的私人yum回购.这是一个HTTP基础仓库,Apache作为Web服务器,所以我想添加一些身份验证.这是我需要用Apache做的事情,还是我可以用createrepo库来指定用户名和密码?最终目标是有几个回购:
Dev-Repo,QA-Repo,Staging-Repo和Production-Repo
我希望开发人员只能访问dev-repo,只有QA访问QA-Repo等等......
我有一个使用Basic Auth保护的WebApi,它使用AuthorizationFilterAttribute应用于整个Api.我还在我的几个Api控制器上安装了SignalR Hub.
除此之外,我还有一个使用WebApi的网页.该网页主要是用Backbone编写的,所以为了调用我的安全WebApi,我添加了以下jquery
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('Authorization', 'Basic ' + Token);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
这适用于与我的Api控制器通信,但添加上述代码已断开与SignalR Hub的连接,具体为:
XMLHttpRequest cannot load http://localhost:50000/signalr/negotiate?_=1366795855194.
Request header field Authorization is not allowed by Access-Control-Allow-Headers.
Run Code Online (Sandbox Code Playgroud)
删除jqXHR.setRequestHeader()线路将恢复我的SignalR Hub连接,但会中断Api呼叫.
鉴于上述情况,我可以做一些hacky并且只设置请求标头,如果发出的请求不是/ signalr但是感觉很脏......
这有更干净的方法吗?
我只是做些傻事吗?有没有其他人参加过此活动?
ajax authorization basic-authentication signalr asp.net-web-api
我有一个WCF服务的以下调用(使用基本身份验证):
client.ClientCredentials.UserName.UserName = "username";
client.ClientCredentials.UserName.Password = "password";
client.MyServiceFunction();
Run Code Online (Sandbox Code Playgroud)
在服务器上,我有:
class MyService : IMyService
{
string MyServiceFunction()
{
return GetUsernameHere();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以在WCF服务中访问这些凭据,如果是,如何访问?也就是说,我该如何实现这个GetUsernameHere功能呢?
我们的一个Web应用程序是使用基本身份验证并使用AngularJS进行构建.为了测试这个应用程序,我使用Protractor,它使用Selenium与浏览器进行通信.
在Chrome中,一切正常,基本身份验证很容易:
username:password@host.ext
Run Code Online (Sandbox Code Playgroud)
在Internet Explorer下,具有密码和用户名的URL预计存在安全风险,因此不允许使用.在Internet Explorer 9之前,可以在注册表中关闭此设置(FEATURE_HTTP_USERNAME_PASSWORD_DISABLE).为Internet Explorer 10设置此注册表项时,行为会更改(不显示错误,并且在没有用户名和密码的情况下重写URL)但该功能看起来已损坏.Internet Explorer 11显示与Internet Explorer 10相同的行为.
有没有人有一个不同的解决方法来绕过这个问题?
selenium basic-authentication internet-explorer-10 protractor
我有一个带有jQuery 1.9.1的phonegap应用程序,只要用户名中没有"@"符号(比如电子邮件地址),就可以了.它只在iOS上失败.
我怀疑它可能不是urlencoding @符号或其他东西.
Android,运行正常.
$.ajax({
url: "https://" + this.hostname + "/alertusmw/services/rest/" + endPoint,
type: method,
dataType: 'json',
contentType: 'application/com.alertus-v1.0+json',
cache:false,
username: this.username,
password: this.password,
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization",
"Basic " + $.base64.encode(this.username + ":" + this.password));
},
data: options.data
}).done(function(response) {
console.log("DONE: " + method + ' completed: ');
console.log(response);
options.success( response );
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log("FAIL: " + method + " FAILED: " + textStatus + "\n" + …Run Code Online (Sandbox Code Playgroud)供应商 API 文档之一提到他们的 API 调用需要使用 HTTP 基本身份验证方案,即用户:密码 Base64 编码,但他们的令牌 API(等效登录)文档提到“ ..此服务实现了 OAuth 2.0 - 资源所有者密码 &证书授予“
HTTP 基本身份验证与 OAuth 不同吗?
我有以下用于访问存储库的“虚拟”凭据(用户名和 PAT):
bd6164:o6g5xae5fmqeqdbjatdfjichdk55lweq4jxyt2jvwtjuzxdwwgxa
Run Code Online (Sandbox Code Playgroud)
现在,根据 MS 文档,我应该向gitusing提供这些凭据git -c http.extraHeader="Authorization: Basic <base64>" ...,这会导致身份验证成功。
git但是,如果我直接在 URL 中提供这些凭据:
https://bd6164:o6g5xae5fmqeqdbjatdfjichdk55lweq4jxyt2jvwtjuzxdwwgxa@azuredevops.example.net
然后认证失败。
通常,当我使用 时git,我可以将我的凭据直接放入 URL 中以成功进行身份验证,那么为什么会遇到这些不一致的情况呢?一般来说,URL 中的凭据是否不会转换为 Base64 并在“Authorization: Basic”HTTP 标头中发送?
以下是 MS 提供的有关如何使用 PAT 的文档git:
作品:
# git -c http.extraHeader="Authorization: Basic YmQ2MTY0Om82ZzV4YWU1Zm1xZXFkYmphdGRmamljaGRrNTVsd2VxNGp4eXQyanZ3dGp1enhkd3dneGE=" clone https://azuredevops.example.net/Main/MyProj/_git/MyRepo
Run Code Online (Sandbox Code Playgroud)
失败:
# git clone https://bd6164:o6g5xae5fmqeqdbjatdfjichdk55lweq4jxyt2jvwtjuzxdwwgxa@azuredevops.example.net/Main/MyProj/_git/MyRepo
Run Code Online (Sandbox Code Playgroud)