相关疑难解决方法(0)

查询字符串参数在HTTPS(HTTP + SSL)中是否安全?

当与请求一起发送时,查询字符串参数是否在HTTPS中加密?

security https http-get

341
推荐指数
4
解决办法
12万
查看次数

从OWIN中的OAuth Bearer Token获取IPrincipal

我已使用OWIN成功将OAuth添加到我的WebAPI 2项目中.我收到令牌,可以在HTTP Header中使用它们来访问资源.

现在,我想在其他通道上使用这些令牌进行身份验证,而不是为OWIN模板制作的标准HTTP请求.例如,我正在使用WebSockets,其中客户端必须发送OAuth承载令牌进行身份验证.

在服务器端,我通过WebSocket接收令牌.但是,我现在如何将此令牌放入OWIN管道以从中提取IPrincipal和ClientIdentifier?在WebApi 2模板中,所有这些都是为我抽象的,因此我无需做任何事情来使其工作.

所以,基本上,我将令牌作为字符串,并希望使用OWIN来访问该令牌中编码的用户信息.

提前感谢您的帮助.

.net c# oauth asp.net-web-api owin

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

Web API/OWIN,SignalR和授权

我正在开发AngularJS,Web API,SignalR应用程序的原型,作为VS 2013中新项目的潜在起点.

在这个阶段,我几乎使用visual studio为个人用户帐户生成的预制代码.

StartUp.Auth.cs代码中有一行看起来像这样.

app.UseOAuthBearerTokens(OAuthOptions);
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以将[Authorize]属性添加到控制器,它工作正常.

顺便说一句,使用angular我可以在JavaScript中添加包含令牌的标准头,如下所示.

$http.defaults.headers.common.Authorization = 'bearer ' + access_token;
Run Code Online (Sandbox Code Playgroud)

然后我将SignalR添加到项目中.
它支持自己的[Authorize]属性版本,但在使用SignalR时无法传递自定义标头.
这是浏览器方面的限制.
文档说您可以将令牌作为查询字符串的一部分传递.
我在JavaScript方面添加了该代码.我的SignalR代码现在包含了这个.
我将令牌传递为'bearer_token'.

this.connection = $.hubConnection("/TestHub", { useDefaultPath: false, qs: "bearer_token=" + token });
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何使OWIN识别令牌现在它不再在标题中.
经过多次搜索后,我最终添加了将令牌从查询字符串移动到标题中的代码.
对于我的原型,我刚刚在StartUp.Auth.cs的原始行上面添加了一些代码.

所以,现在它看起来像这样:

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()
{
    Provider = new OAuthBearerAuthenticationProvider()
    {
        OnRequestToken = context =>
        {
            if (context.Request.Path.Value.StartsWith("/TestHub"))
            {
                string bearerToken = context.Request.Query.Get("bearer_token");
                if (bearerToken != null)
                {
                    string[] authorization = new string[] { "bearer " + bearerToken };
                    context.Request.Headers.Add("Authorization", authorization);
                }
            }

            return Task.FromResult(context);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr angularjs owin

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

标签 统计

c# ×2

owin ×2

.net ×1

angularjs ×1

asp.net ×1

asp.net-web-api ×1

http-get ×1

https ×1

oauth ×1

security ×1

signalr ×1