我正在尝试按照标题中的说明进行 http get 请求。我写的:
uri = URI.parse("https://myaddress.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
@data = http.get(uri.request_uri)
Run Code Online (Sandbox Code Playgroud)
请求被发送到我想要发送的地方,我收到一个未经授权的响应(正如预期的那样,因为我没有指定基本身份验证)。
我试过了
http.basic_auth 'user', 'pass'
Run Code Online (Sandbox Code Playgroud)
但是对于我的 http 变量的类型没有这样的方法。如何添加身份验证详细信息?
更新:我尝试在这里使用RUBY - SSL、Basic Auth 和 POST 之类的东西,但是在用 Get 替换 Post 之后,我无法使用“use_ssl”和“verify_mode”属性(我没有得到这样的属性错误)。
更新 2:我发现我可以在 Net::HTTP 对象上设置“use_ssl”属性,在 Net::HTTP::Get 对象上设置“basic_auth”。现在的问题是我怎样才能让它们一起工作?
我在 nginx 服务器下有一个 symfony 应用程序。我想启用基本的 http 身份验证,但排除 /api/ url 请求中的所有内容。
这是我当前的 nginx 配置:
server {
listen 80;
listen [::]:80;
root /home/mysite/www/web;
index app.php index.php index.html;
server_name mysite.com;
error_log /home/mysite/logs/error.log warn;
access_log /home/mysite/logs/access.log;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# PROD
location ~ ^/app\.php(/|$) {
include /etc/nginx/php-mysite.conf;
# Protect access
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location ~ ^/app\.php/api/(.*) {
include /etc/nginx/php-mysite.conf;
auth_basic "off";
}
location ~ /\.ht {
deny all;
} …Run Code Online (Sandbox Code Playgroud) 问题:我需要在使用 Laravel 5.4 创建的 API 上实现基本身份验证。由于我们需要在没有数据库的情况下实现它(只需从 获取凭据config()),我尝试创建一个注册中间件,如下所示:
<?php
namespace App\Http\Middleware;
class AuthenticateOnceWithBasicAuth
{
public function handle($request, $next)
{
if($request->getUser() != conf('auth.credentials.user') && $request->getPassword() != conf('auth.credentials.pass')) {
$headers = array('WWW-Authenticate' => 'Basic');
return response('Unauthorized', 401, $headers);
}
return $next($request);
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,但这样我只能拥有整个 API 的一个凭据。我试图在配置中创建多个凭据,从请求中保存用户和密码,但是这样,它就像禁用了基本身份验证一样工作。
问题:有什么办法可以做到这一点吗?如何在不使用数据库的情况下在我的配置文件中拥有多个凭据?
我试图通过基本身份验证获取 url。我设置了用户/密码,如下所示。同样的凭证在邮递员中工作。
String RELATIVE_IDENTITY_URL = "http://my_url/api/core/v3/people/email/abc@example.com";
RestTemplate restTemplate;
Credentials credentials;
//1. Set credentials
credentials = new UsernamePasswordCredentials("admin", "admin");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials( AuthScope.ANY, credentials);
//2. Bind credentialsProvider to httpClient
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
httpClientBuilder.setDefaultCredentialsProvider(credsProvider);
CloseableHttpClient httpClient = httpClientBuilder.build();
HttpComponentsClientHttpRequestFactory factory = new
HttpComponentsClientHttpRequestFactory(httpClient);
//3. create restTemplate
restTemplate = new RestTemplate();
restTemplate.setRequestFactory(factory);
//4. restTemplate execute
String url = RELATIVE_IDENTITY_URL;
String xml = restTemplate.getForObject(url,String.class);
System.out.println("Done");
Run Code Online (Sandbox Code Playgroud)
我认为凭据设置不正确。这里有什么问题。?错误:
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:667)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:620)
at …Run Code Online (Sandbox Code Playgroud) 我需要以user:pass查询参数 (es. http://example.com?BASIC_AUTH=dXNlcjpwYXNz)的形式向 nginx发送一些基本的身份验证凭据 (es. ),并能够以更常见的Authorization: Basic dXNlcjpwYXNz标头形式将它们转发到代理后面的目标服务器。
我已经能够使用正则表达式检索编码的 auth 字符串的值。问题是该值通常可能包含一些需要在 URL 中进行百分比编码的字符。埃斯。user:pass!->?BASIC_AUTH=dXNlcjpwYXNzIQ==变成?BASIC_AUTH=dXNlcjpwYXNzIQ%3D%3D
因此,当我将请求转发到目标服务器时,我最终Authorization: Basic dXNlcjpwYXNzIQ%3D%3D会指定目标服务器将拒绝哪个,并给出 401 Unauthorized。
如何在设置 Authorization 标头之前强制 nginx 解码 auth 字符串?在此先感谢您的帮助。
注意:由于某些特定于应用程序的限制,我无法首先在 Authorization 标头中发送 auth 字符串。
我正在寻找在 Quart 上使用基本身份验证。我知道 quart-auth 可用,但它仅支持基于 cookie 的身份验证。有没有一种方法可以使用基本身份验证,而无需使用 Flask-BasicAuth 的 Flask 补丁?
我最近想在heroku上部署我的Rails应用程序,但是想要将它与外界隔离,直到我在heroku上测试它.为了屏蔽它,我使用了authenticate_or_request_with_http_basic.但是,在通过基本身份验证并希望登录(使用authlogic登录系统)后,我发现authlogic不记得会话(例如current_user == nil).
如果没有authenticate_or_request_with_http_basic before_filter,则authlogic会话可以正常工作.
有谁知道这是为什么以及如何让两者协同工作?
提前致谢.
PS:为了清楚起见,我的目标是不能将authlogic用户与authenticate_or_request_with_http_basic一起使用.
PPS:我使用Rails 3和git://github.com/odorcicd/authlogic.git
在我的python项目中,登录过程由HttpBasicAuth处理程序处理.得到响应后,我应该通过selenium加载主页面.
它应该如何完成?
它有baseurl.当基本URL由python-selenium加载时,弹出框会询问用于身份验证的用户名和密码.然后它进入主页面.
以下是两个步骤:
我使用HttpBasicAuth处理程序的原因是,当我打开我的URL时,它会打开一个用于登录的弹出窗口.因为,我们不知道由Selenium处理的弹出模式对话窗口的控制,我们切换到HttpAuthentication.
(这是我需要建议的部分.)
在这个中间部分,我使用来自HttpBasicAuth处理程序的响应进行身份验证,以便Selenium可以继续测试中的其他步骤.
如何在Selenium中对站点进行身份验证?我是否必须使用HttpBasicAuthentication Response为Selenium webdriver创建一个cookie,以便跳过登录框?
我已经实现了......或者更确切地说是从http://www.asp.net/web-api/overview/security/authentication-and-authorization/basic-authentication复制粘贴的代码,但是当我尝试运行网站时,我得到了这个错误:
Could not load file or assembly 'BasicAuth' or one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
我正在研究这个例子,所以我对这是什么知之甚少,为什么它不起作用?
我有多组传感器网络将数据发送到.net web api.不知何故,我需要保护API的一些端点(以便我可以确定发送到API的信息确实来自传感器).基本身份验证和SSL似乎是一种方法.问题是我无法理解SSL部分.
截至目前,我已经创建了存储在传感器上的客户端证书,可以通过Request.GetClientCertificate()方法在API中检索证书的信息.当我只是想用基本的身份验证来保护我的Api时,这是否有点过分?也就是说,只需通过https发送数据而不提供证书,通信是否安全?
我不需要使用证书进行身份验证(因为这是通过基本身份验证完成的).