【发布时间】:2017-06-17 21:11:44
【问题描述】:
我有一个移动客户端(应用程序)让用户通过 google 进行身份验证。因此,客户端从谷歌接收访问令牌和一些信息(姓名、电子邮件等)。工作正常!
我还创建了移动应用程序应与之通信的 ASP.NET Web API。在客户端,我将令牌添加到 HttpClient 中: client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "pretty_long_access_token_separated_by_two_dots");
问题 1:我正在尝试“解码”此站点上的访问令牌(以确保一切正常):https://jwt.io/ 标头和有效负载都可以,但它似乎是一个“无效签名”(在底部说)。我应该担心这个吗?
在服务器端,我在 Startup 类的 Configuration 方法中添加了这个:
app.UseJwtBearerAuthentication( new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new List<string> {"my_client_id"},
IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
{
new SymmetricKeyIssuerSecurityTokenProvider(@"https://accounts.google.com/", "my_client_secret")
},
});
我想在服务器端对令牌做的唯一事情是确保只有我的应用程序中经过验证的用户才能访问我的 API 控制器。
问题 2:UseJwtBearerAuthentication 对我来说是正确的,还是我走错了方向?
我的问题是,在尝试访问我的 WEB API 控制器时,我经常收到未经授权的 401。
如果我在正确的轨道上,我可以尝试解释更多有关服务器端设置的信息...
任何帮助将不胜感激!
【问题讨论】:
-
澄清一下,您是发布 JWT 还是 Google?
标签: c# asp.net asp.net-web-api oauth jwt