标签: basic-authentication

如何在 django 中启用基本访问身份验证

我想在我的 Django 项目中启用基本访问身份验证,如下所示:在此输入图像描述

我通过 Google 找到了这篇文章,并根据第一个答案更改了我的 settings.py:

MIDDLEWARE_CLASSES = (
  ...

  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.RemoteUserMiddleware',

  ...
)

AUTHENTICATION_BACKENDS = (
  'django.contrib.auth.backends.RemoteUserBackend',
)
Run Code Online (Sandbox Code Playgroud)

但身份验证窗口没有出现。该项目仍处于调试模式,我通过python ./manage.py runserver.

python django basic-authentication

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

基本身份验证用户名/密码可以使用多长时间?

使用基本身份验证时,对以下长度是否有任何限制:

  • 用户名,
  • 密码,
  • 组合的用户名和密码

常用的客户端或客户端框架是否有任何实际限制?

basic-authentication http-headers

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

带有 JWT 和基本身份验证的 HttpListener:如何发送 WWW-Authenticate?(自托管)

我有一个在 mono/.NET 上跨平台运行的自托管 REST 应用程序。一个问题是 HttpListener 管理并阻止 WWW-Authenticate 标头的手动设置。如果您将自己限制为内置的 Basic、NTLM 等身份验证,或者不需要身份验证,那么这很好,但如果您想接受任何其他类型的令牌,则这是一个问题。

我使用带有 REST 风格界面的 JWT 令牌,并使用 Basic[1] auth 进行初始身份验证。在应用程序的另一部分,我正在做类似的事情,但使用自定义令牌和/或基本身份验证作为 API 另一部分的后备。

问题:

如何让 HttpListener 发送“WWW-Authenticate: Basic”质询标头,同时允许非基本授权令牌通过?

我尝试在监听器中设置基本和匿名:

_listener.AuthenticationSchemes = 
    AuthenticationSchemes.Basic | AuthenticationSchemes.Anonymous;
Run Code Online (Sandbox Code Playgroud)

这会导致在任何情况下都不会返回 WWW-Authenticate 标头。我相信这应该允许基本或未经身份验证的连接,并且当我将状态代码设置为 401 (HttpStatusCode.Unauthorized) 时,还应该设置 WWW-Authenticate 质询。但事实并非如此(无论是在 mono 还是 .NET 上)。

如果我只设置 AuthenticationSchemes.Basic,HttpListener 会拒绝所有没有 Basic 样式令牌的连接,这没有任何用处。

明显但蹩脚的解决方法:

目前,我只是违反了 HTTP 规范并在没有 WWW-Authenticate 标头的情况下返回 401。这可行,但会降低与第三方工具的兼容性。

我考虑过使用完全不同的 HttpListener 实现,尽管大多数似乎要么处于原型阶段,要么是它们自己的大型库的一部分。我曾考虑过编写自己的 HttpListener,但此时将整个应用程序移植到 Java 开始显得很有吸引力。我希望找到比完整平台移植或编写自己的库更少工作的建议。

有想法吗?

[1] - 这里需要基本身份验证,以便向后兼容低级脚本和一些其他系统。请假设我了解安全隐患并且正在使用 SSL 等。

c# self-hosting httplistener basic-authentication jwt

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

Python“请求”库:每个请求的HTTP基本认证

在 Python 脚本中,我使用带有 HTTP 基本身份验证和自定义 CA 证书的“请求”库来信任,如下所示:

import requests    
response = requests.get(base_url, auth=(username, password), verify=ssl_ca_file)
Run Code Online (Sandbox Code Playgroud)

我需要提出的所有请求都必须使用这些参数。是否有一种“Python”方法可以将这些设置为所有请求的默认值?

python basic-authentication python-requests

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

Apache 2.4 mod_auth_form 缺失

我在 Centos 7 上运行 Apache 2.4。现在我需要mod_auth_form模块,因为找不到指令AuthFormLogoutLocation 。现在它既没有安装,也无法在yum search mod_auth列表中找到它:

$ locate modules/mod_auth
/usr/lib64/httpd/modules/mod_auth_basic.so
/usr/lib64/httpd/modules/mod_auth_digest.so
/usr/lib64/httpd/modules/mod_authn_anon.so
/usr/lib64/httpd/modules/mod_authn_core.so
/usr/lib64/httpd/modules/mod_authn_dbd.so
/usr/lib64/httpd/modules/mod_authn_dbm.so
/usr/lib64/httpd/modules/mod_authn_file.so
/usr/lib64/httpd/modules/mod_authn_socache.so
/usr/lib64/httpd/modules/mod_authnz_ldap.so
/usr/lib64/httpd/modules/mod_authz_core.so
/usr/lib64/httpd/modules/mod_authz_dbd.so
/usr/lib64/httpd/modules/mod_authz_dbm.so
/usr/lib64/httpd/modules/mod_authz_groupfile.so
/usr/lib64/httpd/modules/mod_authz_host.so
/usr/lib64/httpd/modules/mod_authz_owner.so
/usr/lib64/httpd/modules/mod_authz_user.so

$ yum search mod_auth
...
===== N/S matched: mod_auth ======
ipsilon-authgssapi.noarch : mod_auth_gssapi based login plugin
mod_auth_gssapi.x86_64 : A GSSAPI Authentication module for Apache
mod_auth_kerb.x86_64 : Kerberos authentication module for HTTP
mod_auth_mellon.x86_64 : A SAML 2.0 authentication module for the Apache Httpd Server
mod_auth_ntlm_winbind.x86_64 : NTLM …
Run Code Online (Sandbox Code Playgroud)

apache basic-authentication

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

htaccess 从基本身份验证中排除多个 url

您好,我需要在测试阶段保护我的应用程序。

我读过这篇关于从基本身份验证中排除一个网址的文章

但我想排除 2 个网址:

/API/*

/oauth/v2/令牌

因此,除了这两个公开的 url 之外,整个应用程序都将受到保护。否则我无法访问我的 api 路由。

我现在的 .htaccess 是:

# Protect the app with password
AuthUserFile /home/master/public_html/web/.htpasswd
AuthName "Protected"
AuthType Basic
Require valid-user
Run Code Online (Sandbox Code Playgroud)

所以我猜我应该需要某种排序或正则表达式:

SetEnvIf Request_URI ^/api/ noauth=1
Run Code Online (Sandbox Code Playgroud)

我怎样才能有像 OR 条件?

apache .htaccess basic-authentication .htpasswd

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

如何使用 Swagger UI 自动授权所有端点?

我部署了一个完整的 API,可以使用 Swagger UI 访问。它使用基于 HTTPS 的基本身份验证,您可以轻松地点击授权按钮并输入凭据,一切都非常好用,试试吧!特征。

但是,我想使用共享的用户名和密码制作 API 的公共沙盒版本,该版本始终经过身份验证;也就是说,任何人都不应该打开授权对话框来输入凭据。

我尝试根据另一个 Stack Overflow 问题的答案输入授权,方法是将以下代码放入scriptHTML 页面的元素中:

window.swaggerUi.load();
swaggerUi.api.clientAuthorizations.add("key", 
  new SwaggerClient.ApiKeyAuthorization(
  "Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", "header"));
Run Code Online (Sandbox Code Playgroud)

但是,当我点击Try it out!按钮时,未使用授权。

在所有端点上全局设置 auth 标头的正确方法是什么,这样用户就不必手动输入凭据?

(我知道这可能听起来像一个奇怪的问题,但就像我提到的,它是一个公共用户名/密码。)

basic-authentication swagger-ui swagger-2.0

3
推荐指数
2
解决办法
8773
查看次数

带有标头的基本身份验证 - Javascript XMLHttpRequest

我正在尝试访问需要基本身份验证凭据的 Adyen 测试 API。https://docs.adyen.com/developers/ecommerce-integration

我的凭据在通过浏览器访问 API 页面时有效。
验证

但是在尝试使用 XMLHttpRequest POST 请求访问 API 时,我收到了401 Unauthorized响应。

Javascript代码

var url = "https://pal-test.adyen.com/pal/servlet/Payment/v25/authorise";

var username = "ws@Company.CompanyName";
var password = "J}5fJ6+?e6&lh/Zb0>r5y2W5t";
var base64Credentials = btoa(username+":"+password);

var xhttp = new XMLHttpRequest();
xhttp.open("POST", url, true);
xhttp.setRequestHeader("content-type", "application/json");
xhttp.setRequestHeader("Authorization", "Basic " + base64Credentials);

var requestParams = XXXXXXXX;
xhttp.send(requestParams);
Run Code Online (Sandbox Code Playgroud)


结果

结果

javascript xmlhttprequest basic-authentication cors adyen

3
推荐指数
2
解决办法
7214
查看次数

没有自定义授权方的 AWS lambda 基本身份验证

我在为我用 Node.js 编写的 AWS lambda 函数设置基本身份验证时遇到问题。

问题:
AWS lambda 函数是附加服务的代理。这个函数只转发整个请求并给用户整个响应。这就是为什么我需要强制使用Authentication标头,我希望有传递凭据的提示窗口:https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication

除了我的 lambda 函数的代理部分之外,我还专注于身份验证问题,并编写了以下代码:

export const proxy = async (event) => {
    const authorizationHeader = event.headers.Authorization;
    if (typeof authorizationHeader === undefined) {
        throw new Error("Unauthorized");
    }
    ...
};
Run Code Online (Sandbox Code Playgroud)
service:
  name: proxy-auth-test

plugins:
  - serverless-webpack

provider:
  name: aws
  runtime: nodejs8.10
  memorySize: 128
  timeout: 10

functions:
  proxy-async:
    handler: handler.proxy
    events:
      - http:
          method: get
          path: api/proxy

resources:
  Resources:
    GatewayResponse:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.WWW-Authenticate: "'Basic'"
        ResponseType: UNAUTHORIZED
        RestApiId: …
Run Code Online (Sandbox Code Playgroud)

basic-authentication node.js aws-lambda serverless

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

如何将具有基本授权的 UrlFetchApp 分配给按钮?

我在 Google Apps Script 中创建了函数,当我在 Google Apps Script 中运行它时效果很好。输出数据返回到 Google 表格。

function testFunction11() {
  var rng = SpreadsheetApp.getActiveRange();
  var encodedAuthInformation = Utilities.base64Encode("username:key");
  var headers = {"Authorization" : "Basic " + encodedAuthInformation};
  var params = {
    'method': 'GET',
    'muteHttpExceptions': true,
    'headers': headers
  };
  var res = UrlFetchApp.fetch("https://api.apiservice.com/api/v1/xxx?fields=somefields", params);
  Logger.log(res.getContentText());
  rng.setValue(res);
}
Run Code Online (Sandbox Code Playgroud)

单元格中的输出:

[
  {
    "id": xxx,
    "createdDate": "2019-02-01T04:54:00Z",
    "reference": "XXX"
  },
etc
Run Code Online (Sandbox Code Playgroud)

然后我将脚本分配给按钮“testFunction11”。当我点击按钮时,它返回

{
  "message": "An error has occurred."
}
Run Code Online (Sandbox Code Playgroud)

它看起来像来自 API 服务器的响应。

我唯一的假设是 google sheet 的按钮添加了一些 headers,User-Agent 或 content-type 来请求,这在 …

get basic-authentication urlfetch google-apps-script x-forwarded-for

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