我想在ASP classic中开发一个网站,该网站对脚本控制下的数据库或密码列表使用HTTP身份验证.理想情况下,解决方案应该不涉及组件或IIS设置,因为脚本应该可以在托管环境中运行.
任何线索/代码深受赞赏.
所有这些都与WebHttp绑定有关,托管在自定义服务主机中(此时IIS不是一个选项).
我已经实现了自定义UserNamePasswordValidator和自定义IAuthorizationPolicy.当我将端点的绑定配置为使用基本身份验证时,一切都可以正常工作(自定义主体,自定义角色等).
我也想添加匿名HTTP访问的能力,并让我的自定义实现将匿名用户置于某些默认角色等等.(如果没有发送Authenticate标头).
现在发生的事情是,在我的任何自定义代码被命中之前,匿名用户被给予401.如果我关闭HTTP基本身份验证要求,则完全忽略Authenticate标头.
如何配置或注入Authenticate标头,以两种方式执行此操作(不创建2个单独的端点)?
我很抱歉已经有类似的问题,但我想更广泛地问它.
有没有办法在客户端确定Web应用程序,如果请求资源将返回401状态代码并导致浏览器显示丑陋的身份验证对话框?
或者,是否有任何方法可以在Flash中加载mp3音频资源,在401状态代码的情况下无法无形地失败,而不是让浏览器显示丑陋的对话框?
如果我设置了URLRequest对象的"authenticate"属性,但此属性不在Flash运行时中,Adobe Air运行时将禁止身份验证.任何适用于客户端的解决方案都可以.XMLHttpRequest不太可能有效,因为问题中的资源将位于不同的域中.
隐藏失败非常重要,因为应用程序将包含许多要尝试的音频资源的列表,当有许多其他可用时,打扰用户尝试对其进行身份验证是没有意义的.解决方案在客户端上运行非常重要,因为有问题的mp3来自我控制之外的各种服务器.
有没有人有任何关于如何使用oAuth为应公开公开的API提供身份验证机制的示例或建议?
具体来说,我正在谈论成为我自己的API的oAuth提供者,而不是与其他人的API集成或认证.
例如,我希望能够向开发人员发布API密钥,他们可以使用它来验证和访问我的API,就像Flickr一样,并且据我所知,oAuth可以支持这一点,但我不确定如何构建解决方案?
我在我的服务器上安装了jenkins,我想用nginx http auth保护它,以便请求:
http://my_domain.com:8080
http://ci.my_domain.com
Run Code Online (Sandbox Code Playgroud)
除一个地点外,将受到保护:
http://ci.my_domain.com/job/my_job/build
Run Code Online (Sandbox Code Playgroud)
需要触发构建.我是nginx的新手,所以我坚持使用nginx配置.
upstream jenkins {
server 127.0.0.1:8080;
}
server {
listen x.x.x.x:8080;
server_name *.*;
location '/' {
proxy_pass http://jenkins;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
auth_basic "Restricted";
auth_basic_user_file /path/.htpasswd;
}
}
Run Code Online (Sandbox Code Playgroud)
我试过像上面配置的smth但是当我访问时http://my_domain.com:8080没有http auth.
我试图~/public_html/dev使用http auth basic 保护目录,但为了使其安全,我想在ssl上运行它.
.htaccess如果请求URI /dev以及开始工作,则以下文件的中间部分将切换为https .
该文件的最后一部分也可以正常工作,但与https重定向无法正常工作.
我基本上希望能够键入http://www.example.com/dev/some_sub_dir/并重定向到https://www.example.com/dev/some_sub_dir/并提示输入http auth用户名和密码.
目前发生的情况是,如果我去,http://www.example.com/dev/some_sub_dir/我会通过端口80提示输入用户名和密码,然后立即通过端口443再次提示.因此,我的凭据被发送两次,一次是明文,一次加密.使整个https url重写有点无意义.
这样做的原因是我无法意外地通过http提交我的用户/传递; https将始终用于访问该/dev目录.
该.htaccess是在~/public_html/dev目录中.
# Rewrite Rules for example.com
RewriteEngine On
RewriteBase /
# force /dev over https
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} ^/dev
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
# do auth
AuthType Basic
AuthName "dev"
AuthUserFile /home/matt/public_html/dev/.htpasswd
Require valid-user apache .htaccess mod-rewrite url-rewriting http-authentication
我试图使用HTTP从IP摄像头获取图像.相机需要HTTP基本身份验证,因此我必须添加相应的请求标头:
URL url = new URL("http://myipcam/snapshot.jpg");
URLConnection uc = url.openConnection();
uc.setRequestProperty("Authorization",
"Basic " + new String(Base64.encode("user:pass".getBytes())));
// outputs "null"
System.out.println(uc.getRequestProperty("Authorization"));
Run Code Online (Sandbox Code Playgroud)
我稍后将url对象传递给ImageIO.read(),并且,正如您所猜测的,我正在获取HTTP 401 Unauthorized,尽管user并且pass是正确的.
我究竟做错了什么?
我也试过了new URL("http://user:pass@myipcam/snapshot.jpg"),但这也行不通.
我们有一个rails应用程序设置,它使用devise&omniauth允许通过facebook身份验证登录.我们还有一个移动应用程序,当前使用http身份验证通过传递用户名和密码或传入http身份验证令牌来登录rails应用程序.到目前为止,这一切都很有效.
移动应用程序还具有与Facebook本身进行身份验证的能力,并直接在自己和Facebook之间接收用户facebook令牌.
我想弥合这个差距,以便如果用户通过Facebook从移动应用程序登录并拥有他们的facebook令牌,允许将facebook令牌用作rails app上的身份验证,就好像他们已经从facebook通过浏览器.
最终结果是移动应用程序可以通过以下方式登录用户:
1)用户名/密码或2)http认证令牌或3)omniauth(facebook)令牌
此外,在3)的情况下,如果用户尚未存在于rails应用程序中,则需要创建用户 - 现在已经使用浏览器端身份验证执行此操作,因此可能无需执行任何操作.
如何在设计构造中最好地实现这一目标?
我试图使用filter_input从PHP中的HTTP身份验证中检索用户登录名和密码,但我得到PHP_AUTH_USER和PHP_AUTH_PW的空值.我做了一个测试:
$phpAuthUserFV = filter_input(INPUT_SERVER, 'PHP_AUTH_USER');
// gives null
$phpAuthUser = $_SERVER['PHP_AUTH_USER'];
// gives the user login entered
$remoteAddr = filter_input(INPUT_SERVER, 'REMOTE_ADDR');
// gives the remote address
$phpSelf = filter_input(INPUT_SERVER, 'PHP_SELF');
// gives the PHP_SELF value
Run Code Online (Sandbox Code Playgroud)
使用PHP 5.5.5和5.3.3进行测试.
我错过了什么吗?我只是想知道,为什么filter_input失败了这两个$ _SERVER键,但与其他键合作.
我有一个Spring MVC REST服务,启用了Spring Security(3.2.5.RELEASE).当我打开@EnableWebMvcSecurity时,会在http:// localhost:8080/login为我自动生成一个登录表单.如果我使用此表单登录,一切正常.
当我尝试通过直接发送POST请求登录时,会发生此问题.在我的帖子请求中,我提供了用户名和密码.我还包括http标头'X-CSRF-TOKEN',对于标头值,我使用我看到的JSESSIONID已在cookie中生成.但是,当我发送此POST请求时,我得到以下结果:
HTTP Status 403 - Invalid CSRF Token '29F5E49EFE8D758D4903C0491D56433E'
was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我提供了错误的令牌价值吗?这是什么JSESSIONID?如果我没有为此标题输入值,或者一起省略标题,则会告诉我"找到空的CSRF标记".
以下是我的Spring Security配置:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/secure/**").authenticated()
.and()
.formLogin()
.usernameParameter("username")
.passwordParameter("password")
.and()
.logout()
.and()
.httpBasic()
.and()
.csrf();
}
}
Run Code Online (Sandbox Code Playgroud)
我真的很感激任何帮助!提前致谢!