标签: unauthorized

使用 WebClient 调用授权的 Web API

经过几个小时的互联网搜索,我决定向你们寻求帮助。

我已经用几个简单的 get/post 方法编写了一个 Web API。我正在使用个人用户帐户身份验证方法。

使用 HttpClient,我成功地调用了每个 AUTHORIZED get 和 post 方法以及用于生成授权令牌的 /token 端点。

问题是我必须在 .NET Framework 3.5 项目中调用这些方法。因此,我尝试使用 WebClient 来执行此操作,因为我了解到 .NET Framework 3.5 不支持 HttpClient。

GetAPIToken() 方法生成不记名令牌并且它有效。

 private static string GetAPIToken(string userName, string password, string apiBaseUri)
    {
        using (WebClient client = new WebClient())
        {
            client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            var response = client.UploadString(apiBaseUri + "/Token", "POST", "grant_type=password&username=" + userName + "&password=" + password);
            var jObject = JObject.Parse(response);
            return jObject.GetValue("access_token").ToString();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我从 Web API 中删除 [Authorize] 属性时,此 GET 方法有效,但在获得授权后无法使其工作。

    //GET ODRA?ENI …
Run Code Online (Sandbox Code Playgroud)

api webclient token unauthorized http-status-code-401

6
推荐指数
0
解决办法
4378
查看次数

C# HttpClient 授权标头在发送到服务器后被删除

HttpClient我想通过我自己的 C# API向外部 API 发送请求。我正在使用 dot net 5 和基本身份验证。这是我的代码:

var client = new HttpClient 
{
    BaseAddress = new Uri(baseUrl)
};

HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Put, "apiUrl");

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var param = JsonConvert.SerializeObject(new
{
   param1="",
   param2=""
});

requestMessage.Content = new StringContent(param, Encoding.UTF8, "application/json");
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic",
     Convert.ToBase64String(Encoding.ASCII.GetBytes($"{user}:{pass}")));

HttpResponseMessage response = await client.SendAsync(requestMessage);
Run Code Online (Sandbox Code Playgroud)

通常,我像这样发送http请求。但现在我遇到了一些问题。

从我的请求标头中删除行授权标头后HttpResponseMessage response = await client.SendAsync(requestMessage);,我收到 UnAuthorized http 错误。

我知道,当发生重定向时,出于安全原因,授权标头被删除。我也不确定外部 API 中的重定向。

我将HttpClientHandlerwith添加AllowAutoRedirect = false到我的HttpClient

var handler = new HttpClientHandler() …
Run Code Online (Sandbox Code Playgroud)

c# httpclient unauthorized basic-authentication www-authenticate

6
推荐指数
1
解决办法
3901
查看次数

401在BitBucket上使用NetBeans + Git的未经授权的错误

我有一个本地git存储库.最近我从bitbucket添加了一个远程存储库,并通过以下方式将我的分支推送到那里:git push bitbucket(因为我在https url中配置了用户名和密码).但是当我尝试推送时,使用NetBeans,当我从配置的远程存储库列表中选择并且当我尝试手动输入远程存储库详细信息时,我总是获得401 Unauthorized.我有最新版本的NetBeans和Git插件.

在此先感谢您的帮助.

git netbeans push bitbucket unauthorized

5
推荐指数
1
解决办法
2万
查看次数

让我们加密未经授权的 403 禁止

在服务器上,安装了 Nginx。Let's Encrypt 在 www.domain.com 上运行良好,但不适用于 static.domain.com

使用 PuTTY,当我输入时: sudo letsencrypt certonly -a webroot --webroot-path=/var/www/site/domain -d static.domain.com -d domain.com -d www.domain.com

我有以下问题:

Failed authorization procedure. static.domain.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://static.domain.com/.well-known/acme-challenge/c6zngeBwPq42KLXT2ovW-bVPOQ0OHuJ7Fw_FbfL8XfY: "<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>"

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: static.domain.com
   Type:   unauthorized
   Detail: Invalid response from
   http://static.domain.com/.well-known/acme-challenge/c6zngeBwPq42KLXT2ovW-bVPOQ0OHuJ7Fw_FbfL8XfY:
   "<html>
   <head><title>403 Forbidden</title></head>
   <body bgcolor="white">
   <center><h1>403 Forbidden</h1></center>
   <hr><center>"

   To fix these errors, please …
Run Code Online (Sandbox Code Playgroud)

encryption nginx unauthorized lets-encrypt

5
推荐指数
2
解决办法
1万
查看次数

Keycloak API始终返回401

我正在尝试通过其REST API与Keycloak进行交互。我有主领域和默认的admin用户,以及测试领域。首先,我获得了管理员帐户和测试领域的访问令牌:

let data = {
    grant_type : 'password',
    client_id : 'test-realm',
    username : 'admin',
    password : 'admin'
};
let headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
};
axios.post(
    'https://someurl.com:8080/auth/realms/master/protocol/openid-connect/token',
    qs.stringify(data),
    headers
)
Run Code Online (Sandbox Code Playgroud)

没关系。然后,我尝试拨打电话来创建用户(或执行其他任何操作),然后收到401未经授权的错误:

headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': `Bearer ${accessToken}`
};
data = {
    rep: {
        email: "test@email.com",
        username: "test@email.com"
    },
    path: 'test-realm'
};
axios.post('https://someurl.com:8080/auth/admin/realms/test-realm/users',
    qs.stringify(data),
    headers
)
Run Code Online (Sandbox Code Playgroud)

这不是包含令牌的正确方法吗?访问令牌是您用来认证其他API调用的令牌吗?管理员帐户的令牌不应该用于通过主领域验证对其他客户端的呼叫吗?我必须在管理控制台中更改主领域中的某些设置吗?任何帮助表示赞赏。

api https unauthorized access-token keycloak

5
推荐指数
3
解决办法
7257
查看次数

F#WebApi Cors不起作用

我正在尝试创建一个写入F#并启用的WebApi项目CORS.
控制者:

type DoItController() =
    inherit ApiController()

    [<EnableCors(origins = "*", headers = "*", methods = "Get")>]
    [<HttpGet>]
    [<Route "api/GetGenerateExcel">]
    member __.GetGenerateExcel() =
        async {
            // Some code
            return "It works"

        } 
        |> Async.StartAsTask


}
Run Code Online (Sandbox Code Playgroud)

直接从它工作的浏览器打开它.通过调用它AngularJS或纯Javascript我得到401.

C#中的等效控制器工作原理:

public class DoItController : ApiController
    {
        [EnableCors("*", "*", "Get")]
        [HttpGet]
        [Route("api/GetGenerateExcel")]
        public async Task<string> GetGenerateExcel()
        {
            //Some code
            return "It works"
        }
    }
Run Code Online (Sandbox Code Playgroud)

我也查了一下Global.asax,他们也匹配:

type Global() =
    inherit HttpApplication()

    static member RegisterWebApi(config: …
Run Code Online (Sandbox Code Playgroud)

f# unauthorized cors asp.net-web-api2

5
推荐指数
1
解决办法
93
查看次数

带门卫的Rails中的自定义401页面

我有一个使用Doorkeeper的Rails 4应用程序,要求在大多数控制器中进行身份验证.当我去其中一条限制路线时,我看到一个空白页面.我在终端注意到,Puma说:

过滤链停止为#Proc:0x007fd650803350 @/.../doorkeeper-0.7.2/lib/doorkeeper/helpers/filter.rb:8呈现或重定向已完成401未授权,1ms(ActiveRecord:0.0ms)

我怎样才能捕获这样的401 Unauthorized错误,以便显示自定义页面?我的目标是使用有关如何进行身份验证的消息呈现JSON响应,而不是仅显示空白页面.

ruby-on-rails unauthorized http-status-code-401 doorkeeper

4
推荐指数
1
解决办法
1688
查看次数

Docker上的Kubernetes使用空的serviceaccount创建容器,没有令牌导致容器崩溃和重新启动

仍然遇到类似问题1.3.0和高达1.4.0-alpha.0

在我的情况下(基于docker的设置),无论是trusty还是kubedns都会从api服务器中获得未授权.

奇怪的是,我发现实例内部没有秘密,在路径/var/run/secrets/kubernetes.io/serviceaccount下

[root@ ... ]#  kubectl exec -it kube-dns-v13-htfjo ls /bin/sh
/ #
/ # ls /var/run/secrets/kubernetes.io/serviceaccount
/ #
Run Code Online (Sandbox Code Playgroud)

虽然它们似乎在节点和代理实例中

tmpfs on /var/lib/kubelet/pods/3de53b0c-45bb-11e6-9f03-08002776167a/volumes/kubernetes.io~secret/default-token-8axd8 type
tmpfs on /var/lib/kubelet/pods/3de5591e-45bb-11e6-9f03-08002776167a/volumes/kubernetes.io~secret/default-token-8axd8 type
tmpfs on /var/lib/kubelet/pods/f29f35c7-45cc-11e6-9f03-08002776167a/volumes/kubernetes.io~secret/default-token-ql88q type
Run Code Online (Sandbox Code Playgroud)
  • 删除密钥并删除pod然后重新创建它们没有任何效果
  • 卸载和删除文件夹后重新启动群集也没有任何效果

当然,这导致kubedns无法启动.记录下面

I0709 09:04:11.578816       1 dns.go:394] Received DNS Request:kubernetes.default.svc.cluster.local., exact:false
I0709 09:04:11.578873       1 dns.go:427] records:[], retval:[], path:[local cluster svc default kubernetes]
I0709 09:04:11.579657       1 dns.go:394] Received DNS Request:kubernetes.default.svc.cluster.local., exact:false
I0709 09:04:11.579677       1 dns.go:427] records:[], retval:[], path:[local cluster svc default kubernetes]
E0709 09:04:11.786646       1 reflector.go:216] pkg/dns/dns.go:128: Failed …
Run Code Online (Sandbox Code Playgroud)

crash unauthorized docker kubernetes kube-dns

4
推荐指数
1
解决办法
712
查看次数

重定向期间在 RestSharp 中保留授权标头

我正在使用 RestSharp 进行 GET api 调用。api 调用通过传递授权标头通过 HTTP 基本身份验证进行身份验证。

服务器使用状态代码 307 重定向 api 调用。我的客户端代码确实处理重定向,但授权标头未传递到此重定向的 api 调用。这样做是出于此处提到的正当理由。因此我确实收到了未经授权的错误。

如何配置 RestClient 来恢复授权标头?

var client = new RestClient("https://serverurl.com");
var request = new RestRequest(Method.GET);

request.AddHeader("Authorization", "Basic Z3JvdXAxOlByb2otMzI1");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Tenant-Id", "4892");

IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Run Code Online (Sandbox Code Playgroud)

c# api unauthorized restsharp

4
推荐指数
1
解决办法
5694
查看次数

未经授权的客户端:客户端不允许授予类型“authorization_code”。Django -auth0 -login

我正在用 django 开发一个应用程序,当我尝试使用 auth0 进行登录时,我得到:

"error": {
  "message": "Grant type 'authorization_code' not allowed for the client.",
  "oauthError": "unauthorized_client",
  "type": "oauth-authorization"
}
Run Code Online (Sandbox Code Playgroud)

我已经配置了我的公钥和私钥、登录网址,并且在 auth0 中我已经配置了网址。

此外,我注意到错误可能是在我询问 access_token 时,因为我在访问 auth0.com/oauth/token 时遇到了 http 403 错误。

同时服务器向我发送了这个“GET /complete/auth0?redirect_state=y8oPFziJ01BmdGaRbsRJZod3GZ4dP0hW HTTP/1.1”500 116725

python django authorization unauthorized auth0

4
推荐指数
1
解决办法
1289
查看次数