我已经阅读了几个月的所有这些内容,但出于某种原因,它只是没有点击。我有一个用 .NET 编写的 RESTful Web API,位于 api.domain.com,而该网站,domain.com 是一个 AngularJS SPA 应用程序。
如果客户端(localStorage)上没有 access_token,我会将用户重定向到 Google 以通过 OAuth 2 进行身份验证,然后他们会被重定向回回调页面,在该页面中我将
access_token
写入本地存储。
我现在遇到的问题是,当我调用 API 并发送不记名令牌时,如何让我的 API 识别它并对用户进行身份验证,以便我可以调用授权方法?
我想我在这里兜圈子,只需要一些坚实的方向。
身份验证端点:https://accounts.google.com/o/oauth2/v2/auth
范围:openid 个人资料电子邮件
重定向(目前):http://localhost/callback.html
网络 API:http://api.domain.com
流程:隐式流程
SPA:http://localhost
令牌验证 URI:https://www.googleapis.com/oauth2/v3/tokeninfo
用户进入http://localhost,Angular应用程序检查本地存储中的access_token。如果检测到,它会调用令牌验证 URI 以确保其有效且未过期。在 Angular 中,通过 http 拦截器,任何发出 URI 的请求都会发送到 Web API,它将
access_token
设置为授权标头上的不记名令牌。
我期望此时发生的是,我标记为“授权”的任何 API 方法现在都将允许
User.Identity
对象通过,并返回 200。
这个精彩的演示位于这里。
这篇很棒的文章位于此处。
http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/
与此处最优秀的示例实现配对。
https://github.com/tjoudeh/AngularJSAuthentication
经过我 17 年职业生涯中最长的研究工作之一,我找到了一个将这一切整合在一起的人。