自我主持人

时间:2015-06-09 12:14:03

标签: asp.net-web-api oauth signalr self-hosting

我有一个在自托管应用上运行的webapi,通过oauth提供的安全性,我正在设置用于调用API的授权标头。这很好用,我们在所有电话上都有用户身份。

现在我可以通过查询字符串或cookie(或某些连接类型的标头)将相同的授权令牌传递给signalr(在同一个应用程序中自托管)。

令牌到达服务器以获取信号器,我可以将其添加到context.cookie或标题中。

但是..我可以通过它来创建一个经过身份验证的用户,我似乎被401错误所困扰

我假设我错过了一段代码,这些代码应该使用令牌并为signalr创建一个经过身份验证的用户(即使webapi / owin自己也这样做了)。

有没有人有任何指针,或者说信号器在自主机上与oauth一起工作的例子?

1 个答案:

答案 0 :(得分:0)

你是正确的,你需要设置一种方法来验证和设置用户希望使用SignalR与OAuth。

您可以为SignalR创建客户AuthorizeAttribute。 在其中,您基本上可以获取查询字符串以获取令牌,一旦您拥有令牌,您可以取消保护它并开始验证它并在请求中设置用户上下文。

我在

有一个例子

https://github.com/louislewis2/AngularJSAuthentication/blob/master/AngularJSAuthentication.API/SignalRHelpers/QueryStringBearerAuthorizeAttribute.cs

一旦实现,您只需使用[QueryStringBearerAuthorize]

装饰您的集线器

github链接有一个完整的工作示例,可能会提供一些有价值的见解。