问题标签 [bearer-token]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
15715 浏览

c# - IIS 主机的 OWIN 中默认的 OAuth AccessTokenFormat 实现是什么?

Web API 2 OWIN Bearer 令牌身份验证 - AccessTokenFormat null?

默认 /Token 端点工作正常,我可以从那里获取令牌,但我需要在票证上使用 AccessTokenFormat.Protect 方法来为 externalLogin 生成 accessToken。

基本上我的实现和这个几乎一样,我遇到了同样的问题,AccessTokenFormat 为空。从文档中它说:

用于保护访问令牌中包含的信息的数据格式。如果应用程序未提供默认数据保护提供程序,则取决于主机服务器。IIS 上的 SystemWeb 主机将使用 ASP.NET 机器密钥数据保护,而 HttpListener 和其他自托管服务器将使用 DPAPI 数据保护。如果分配了不同的访问令牌提供程序或格式,则必须将兼容的实例分配给资源服务器的 OAuthBearerAuthenticationOptions.AccessTokenProvider 或 OAuthBearerAuthenticationOptions.AccessTokenFormat 属性。

在我看来,如果未分配 AccessTokenFormat,主机将为它提供基本实现。但我认为它在这里不起作用。有没有办法找到 ISecureDataFormatAccessTokenFormat 的默认实现并将其手动分配给变量?

或者有没有人有其他想法如何解决这个问题?

更新:我获得了 katana 的源代码并找到了 OAuthAuthorizationServerMiddleware 类,从源代码中我可以看到以下代码:

在我的 Startup.Auth 中,这是我的代码:

}

我在 WebApiConfig 中也有以下内容

我不确定为什么 app.UseOAuthAuthorizationServer(OAuthOptions);不设置 accessTokenFormat

0 投票
2 回答
4034 浏览

angularjs - 通过查询字符串传递“承载”时,SignalR 身份验证失败

我想在 SignalR 中启用身份验证,而服务器托管在 ASP.NET WebAPI 中,我正在使用 OAuth Bearer authrnication 并且客户端是 AngularJS。

在客户端,我最初通过 HTTP 标头传递 Bearer 令牌,它与 WebAPI 配合得很好。但是由于 SignalR JavsScript 不支持在其中添加 HTTP 标头connection(这是因为 WebSocket 不支持指定 HTTP 标头),我需要使用如下代码通过查询字符串传递 Bearer 令牌self.connection.qs = { Bearer: 'xxxxxx' };

问题出在 WebAPI 方面,我的 SignalR 总是返回 401 Unauthorized。

下面是我在 WebAPI 方面所做的。

1,我指定OAuthBearerAuthenticationOptions.Providerto QueryStringEnabledOAuthBearerAuthenticationProvider,这是我创建的继承自它的类OAuthBearerAuthenticationProvider,可以从查询字符串中检索 Bearer 令牌。代码如下。

并在 WebAPI 启动时将其注册如下。

2,在 SignalR 部分,我创建了一个授权属性,如下所示。没有任何改变只是用于添加断点。

并在 WebAPI 启动时注册它。

我发现,当 SignalR 连接时,我QueryStringEnabledOAuthBearerAuthenticationProvider.RequestToken被调用并成功检索了 Bearer 令牌。但是,当BearerAuthorizeAttribute.AuthorizeHubConnection调用 SignalR 时,参数request.User仍未通过身份验证。所以它返回了 401。

谁能给我一些关于我做错了什么的想法,谢谢。

0 投票
1 回答
344 浏览

asp.net - 在 Web Api 中使用不记名令牌进行身份验证时如何生成 User 属性?

这方面的文档非常稀少,这意味着我在任何地方都找不到明确的答案。如果我没记错的话,在 MVC 应用程序中使用 cookie 身份验证时,cookie 包含加密信息,该信息在每个请求中被解密并植入到 Principal 中。Bearer Tokens 也会发生同样的事情吗?令牌是否包含进入 Principal 的所有信息?它在幕后是如何运作的?如果这是一个愚蠢的问题,我很抱歉,但我发现 Asp.Net MVC 和 web api 中当前的身份验证/授权实现非常令人困惑,而且那里没有很多好的文档。

0 投票
0 回答
168 浏览

asp.net-mvc - MVC 5 控制器获取对 Google 颁发的不记名令牌的访问权限

我在 VS 2013 中使用默认的 MVC5 SPA 项目模板。我正在使用内置的 Google 身份验证机制来针对 Google 对我的用户进行身份验证。

现在,一旦用户成功通过身份验证,我就需要访问 Google 颁发的不记名令牌。我如何从控制器类中得到这个?

0 投票
2 回答
18027 浏览

asp.net - 从 Web API 的不记名令牌返回用户角色

我正在开发一个 Web API 2 项目。对于身份验证,我使用不记名令牌。成功认证后,API 返回一个 JSON 对象。

现在我想在这个 JSON 对象中返回用户角色。为了从 JSON 响应中获取用户角色,我需要进行哪些更改?

0 投票
1 回答
1111 浏览

asp.net-mvc - AppHarbor 的反向代理导致 SSL 和 app.UseOAuthBearerTokens ASP.NET MVC 5 出现问题

AppHarbor 的应用程序位于 NGINX 负载均衡器后面。因此,所有命中客户端应用程序的请求都将通过 HTTP 进行,因为 SSL 将由该前端处理。

ASP.NET MVC 的 OAuth 2 OAuthAuthorizationServerOptions 具有限制对令牌请求的访问以仅使用 HTTPS 的选项。问题是,与 Controller 或 ApiController 不同,当我指定 AllowInsecureHttp = false 时,我不知道如何允许这些转发的请求通过。

具体来说,在应用启动/配置中:

需要以某种方式在内部进行此检查,如果为真,则将其视为 SSL:

这是我通过应用自定义过滤器属性使用 MVC 控制器的方法: https ://gist.github.com/runesoerensen/915869

0 投票
3 回答
35536 浏览

c# - 为承载授权添加额外的逻辑

我正在尝试实现 OWIN 不记名令牌授权,并基于本文。但是,我在不记名令牌中还需要一条额外的信息,但我不知道如何实现。

在我的应用程序中,我需要从不记名令牌中推断出用户信息(比如 userid)。这很重要,因为我不希望授权用户能够充当另一个用户。这是可行的吗?它甚至是正确的方法吗?如果用户 ID 是 guid,那么这很简单。在这种情况下,它是一个整数。授权用户可能仅通过猜测/蛮力来冒充另一个用户,这是不可接受的。

看这段代码:

我认为可以覆盖授权/身份验证以适应我的需要?

0 投票
1 回答
304 浏览

asp.net-web-api - 丰富 ASP.Net 不记名令牌格式

我已经设置了一个支持不记名令牌的 ASP.NET WebApi 项目,如下所示:

当我向令牌端点发出请求时,我得到了这个答案

有没有办法用这样的附加字段来丰富令牌?

0 投票
1 回答
19470 浏览

owin - 如何生成 Bearer 令牌以调用远程 Web API

我有两个站点,一个是用户登录并管理他们的帐户的站点,另一个是没有 UI 的站点,只不过是一个用于存储和检索内容的 API。这两个站点都使用相同的 Owin ASP.Net Identity 2.0 设置。UI 站点出于显而易见的原因使用 cookie,而 API 站点使用 Bearer 令牌。我需要能够使用当前用户身份验证从 UI 站点调用 API 方法/url。简而言之,我需要在 UI 站点中生成一个有效的 Bearer 令牌,以便在进行 Rest API 调用时添加到 HTTP 标头中。

我正在寻找某种方法来使用“受信任”客户端身份验证并调用 API 的 /Token url 以生成承载令牌,或者由于两个站点共享相同的代码并且用户表调用 Owin 方法来生成承载令牌我可以传递给 API 标头的 UI 站点代码,API 站点将其视为有效令牌。

如果您需要更多信息,请告诉我。

更新:请参阅下面的更新答案以及使用 oAuth 隐式流执行此操作的正确方法。

0 投票
1 回答
5900 浏览

c# - WebApi OAuth UseOAuthBearerAuthentication 给出“序列包含多个元素”错误

我通过以下几行配置了我的 WebApi OAuth 2.0:

但它在每次请求时都会给我以下错误:

OAuthOptions的是:

如果我评论UseOAuthBearerAuthentication一切正常!我还没有自定义 OAuthBearerAuthenticationProvider 并且我直接使用它但是为什么它会给我错误?