ASP.NET 核心 Web API 和 Angular 客户端中的外部身份验证
Posted
技术标签:
【中文标题】ASP.NET 核心 Web API 和 Angular 客户端中的外部身份验证【英文标题】:External authentication in ASP.NET core Web API and Angular Client 【发布时间】:2018-06-15 11:47:45 【问题描述】:我有一个使用 asp.net 核心 Web API 的 Angular 应用程序。我需要为 google 和 facebook 登录添加外部身份验证,以便我的 web 和移动应用程序可以使用这个 web api 来验证用户。我已经浏览了为此提供的文档和教程 喜欢 this one 和 also this 但他们都没有帮助我,因为我的网络应用程序在 Angular 5 上。
我的实际问题是如何获取将我重定向到 Google 或 facebook 登录页面的 URL。
他们大多使用支架式 Asp.net mvc 应用程序,其中有一个控制器:AccountController with Methods ExternalLogins
GET /api/Account/ExternalLogins?returnUrl=%2F&generateState=true
他们说响应将是这样的 json:
["name":"Facebook",
"url":"/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A15359%2F&state=QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1",
"state":"QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1"]
这个 JSON 正是我需要的,因为我需要一个这样的 URL 来打开 facebook 或 google 登录页面。上面的链接使用脚手架项目,并且已经编写的每个代码都适用于 Asp.net Web 应用程序。但就我而言,我已经从头开始了 web api,我的 web 应用程序是 Angular 5。另外,如果我尝试了一个支架式 web api 项目,但我找不到任何名为 AccountController 的控制器,也找不到任何名为 ExternalLogins 的方法来获取 JSON包含提供商名称和登录页面 url。看起来它的完成方式在.net core 2中已经改变了。 上面的第一个链接显示了两种在 Asp.net core 1 和 Asp.net Core 2 的启动类文件中包含 GoogleAuthentication 的方法。所以我一定缺少一些东西。
我正在使用 Asp.net core 2。 我已经获得了 Api 密钥和秘密并添加到启动类文件中。
我希望我足够清楚。
如果我需要详细说明,请告诉我。
请帮忙。谢谢。
【问题讨论】:
【参考方案1】:您需要在 API 中的一个控制器中为 Google 身份验证创建挑战,然后从 Angular 应用重定向到该 API 控制器。
控制器方法
[HttpGet("ExternalLogin")]
public IActionResult ExternalLogin(string provider)
if (provider == null)
return null;
var properties = new AuthenticationProperties RedirectUri = "www.mydomain.com/api/auth/callback" ;
var response = Challenge(properties, provider);
return response;
点击谷歌登录按钮调用组件方法
externalLogin(provider:string)
this.document.location.href = this.baseAPIUrl + 'auth/externallogin?provider='+provider;
【讨论】:
以上是关于ASP.NET 核心 Web API 和 Angular 客户端中的外部身份验证的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ASP.NET 核心 mvc 向 asp.net 核心中的 Web API 发出 PUT 请求?
如何在使用 JWT 的 asp.net 核心 web 应用和 web api 中使用谷歌身份验证
Web APi Vs MVC 和在 ASP.net 核心 Web APi 中提供静态文件
ASP.NET Web API路由系统:路由系统的几个核心类型
text 使用ASP.NET Core 2 Web API,Angular 5,.NET核心身份和Facebook登录进行JWT身份验证