如何使用App Engine的URLFetch服务(Java)指定用于制作Basic-Auth请求的用户名和密码?
我似乎可以设置HTTP标头:
URL url = new URL("http://www.example.com/comment");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("X-MyApp-Version", "2.7.3");        
Basic-Auth的适当标题是什么?
我有使用java配置方法配置Spring安全性的Spring Web应用程序.我想从身份验证中排除一些URL模式(例如:静态资源等).我之前使用spring security xml config做了这个,但是无法弄清楚java配置,因为添加antmatchers没有帮助.
以下是我在扩展WebSecurityConfigurerAdapter的安全配置类中添加的代码
@Override
public void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/authFailure")
            .permitAll()
            .anyRequest()
            .authenticated()
            .and()
            .httpBasic()
            .and()
            .authenticationProvider(_provider)
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .addFilter(authFilter())
            .addFilterAfter(executionContextFilter(),
                    TokenBasedSecurityFilter.class).csrf().disable();
}
我使用的弹簧安全版本是3.2.0.在此先感谢您的帮助
编辑:
我在点击排除的网址时得到的堆栈跟踪,
org.springframework.security.authentication.AuthenticationServiceException: Authorization Header is not available in the request
    at com.inventory.ricemill.tba.spring.TokenBasedSecurityFilter.doFilter(TokenBasedSecurityFilter.java:59)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) …为什么几乎所有网站都使用cookie而不是基本身份验证?它不仅仅是用户/传递窗口很难看,而且它们都不是更安全.它们都不安全(没有https).
问题:我在/ var/www/files /下有一些文件,我希望从特定的IP地址访问它们而不需要用户/密码.但是,我希望任何其他IP地址都应该要求登录才能获得访问权限.
这是在我的httpd.conf中:
<Directory /var/www/files/>
        Order deny,allow
        Deny from all
        Allow from 192.168 
        AuthUserFile /etc/apache2/basic.pwd 
        AuthName "Please enter username and password" 
        AuthType Basic 
        Require user valid-user 
</Directory>
但是,如果我理解正确,这意味着任何来自192.168.*的客户端都可以访问该目录,但是需要有效用户才能查看其内容.任何其他IP地址都将被拒绝.对?
先感谢您.
如果你在网上搜索,你会看到这个问题很多,但没有明确的答案.这是我的具体案例.
我在Mac上使用版本SVN客户端,但在使用命令行时遇到同样的问题.我有个人的回购凭证给别人的回购,它正在我的一台机器上工作,我在6个月前设置它.
我将我的.ssh文件夹从我的用户目录复制到另一台计算机,在该计算机上安装了版本,并通过登录凭据进行设置,只是它失败并显示以下消息:
授权失败:无法向服务器进行身份验证:已拒绝基本质询
repo的URL使用https,但我删除了's'并尝试了非安全的同样问题.然后我从我的其他计算机上删除了我的.ssh文件夹,同样的问题.其他人说这个错误与SVN试图使用基本身份验证(http)和失败有关.这对我没什么帮助,因为我不知道如何解决它.我的登录凭据很好,但是这个错误消息可能是我处理过的描述性最差和写得最差的消息之一.我怎么解决这个问题?
我正在尝试使用Angular2连接/对API执行POST请求,这是一个带有基本身份验证密码的非常简单的API.在api上禁用密码时,一切都按预期工作.但是当我启用基本身份验证时,Angular无法再连接到API.在邮递员一切正常.我尝试了以下但没有成功.
我有两个标题"Content-Type"和"Authorization"
headers.append("Content-Type", "application/x-www-form-urlencoded");
我试过这两个标题.
headers.append("Authorization", "Basic " + btoa(Username + ":" + Password)); 
headers.append("Authorization", "Basic VXNlcm5hbWU6UGFzc3dvcmQ=");
我唯一能找到的是,在RAW请求标头中只有一行包含标题名称,但缺少值:
Access-Control-Request-Headers: authorization, content-type
原始标题:
#Request Headers
OPTIONS /shipment HTTP/1.1
Host: api.example.com
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://localhost:4200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Access-Control-Request-Headers: authorization, content-type
Accept: */*
Referer: http://localhost:4200/address
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,nl;q=0.6
希望有人能提供帮助
我希望用户能够通过HTTP基本身份验证模式登录.
问题是我还希望他们能够再次注销 - 奇怪的是,浏览器似乎并不支持.
这被认为是一种社交黑客风险 - 用户将其机器解锁并且浏览器打开,而其他人可以轻松地访问该网站.请注意,仅关闭浏览器选项卡不足以重置令牌,因此用户可能很容易错过.
所以我想出了一个解决方法,但这是一个完全的问题:
1)将它们重定向到Logoff页面
2)在该页面上激活一个脚本到ajax加载另一个带有伪凭证的页面:
$j.ajax({
    url: '<%:Url.Action("LogOff401", new { id = random })%>',
    type: 'POST',
    username: '<%:random%>',
    password: '<%:random%>',
    success: function () { alert('logged off'); }
});
3)应该总是第一次返回401(强制传递新凭据),然后只接受伪凭证:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOff401(string id)
{
    // if we've been passed HTTP authorisation
    string httpAuth = this.Request.Headers["Authorization"];
    if (!string.IsNullOrEmpty(httpAuth) &&
        httpAuth.StartsWith("basic", StringComparison.OrdinalIgnoreCase))
    {
        // build the string we expect - don't allow regular users to pass
        byte[] enc = Encoding.UTF8.GetBytes(id + ':' + id);
        string expected …我是JAX-WS的新手,有一件事我不明白.
有很多关于如何设置JAX-WS安全性的教程,但几乎所有情况下BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY都存储在一些.xml文件中(取决于我认为的容器) - 它们是"硬编码的"那是.这就是我没有得到的.如何通过将BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY与数据库中的用户名和密码进行比较来验证Web服务客户端?我尝试在客户端设置BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY,如下所示:
    ShopingCartService scs = new ShopingCartService(wsdlURL, name);
    ShopingCart sc = scs.getShopingCartPort();
    Map<String, Object> requestContext = ((BindingProvider)sc).getRequestContext();
    requestContext.put(BindingProvider.USERNAME_PROPERTY, userName);
    requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
    sc.someFunctionCall();
然后,在服务器端检索如下:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
    MessageContext mc = wsContext.getMessageContext();
    mc.get(BindingProvider.USERNAME_PROPERTY);
    mc.get(BindingProvider.PASSWORD_PROPERTY);
}
但我总是得到null,我没有在xml中设置任何东西,web服务工作得很好,除了我不能得到那些变量:(
我在java 1.6,tomcat 6和JAX-WS上运行.
任何有关使用数据库中的密码验证用户的帮助都非常感谢,谢谢.
我指的是这个链接请求服务器.问题是某个时候(并不总是,大约20% - 30%,意味着有时我可以得到成功的响应),我得到401错误和服务器响应基本授权挑战预期,但没有找到.
这是我的代码:
 HttpRequestInterceptor preemptiveAuth = new HttpRequestInterceptor()
{
    public void process(final HttpRequest request, final HttpContext context)
            throws HttpException, IOException
    {
        AuthState authState = (AuthState) context
                .getAttribute(ClientContext.TARGET_AUTH_STATE);
        CredentialsProvider credsProvider = (CredentialsProvider) context
                .getAttribute(ClientContext.CREDS_PROVIDER);
        HttpHost targetHost = (HttpHost) context
                .getAttribute(ExecutionContext.HTTP_TARGET_HOST);
        if (authState.getAuthScheme() == null)
        {
            AuthScope authScope = new AuthScope(targetHost.getHostName(),
                    targetHost.getPort());
            Credentials creds = credsProvider.getCredentials(authScope);
            if (creds != null)
            {
                authState.setAuthScheme(new BasicScheme());
                authState.setCredentials(creds);
            }
        }
    }
};
这是我的身份验证:
    HttpPost httpPost = new HttpPost(SERVER_AUTH_URL);
        httpPost.setHeader("Content-type", "text/xml; charset=utf-8"); …让我们尝试访问
http://yahoo.com@3627729518
任何浏览器.我们被重定向到google.com.
3627729518是11011000.00111010.11000010 .01101110没有点的十进制表示.这种行为的原因是什么?
注意: 
我已经更改了网址,因此它是通用的,但仍然存在http://domain@ip.最初是本地银行网址和诈骗服务的IP.