首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在asp.net核心web应用程序和使用JWT的web api中使用google authencticaion

如何在asp.net核心web应用程序和使用JWT的web api中使用google authencticaion
EN

Stack Overflow用户
提问于 2019-07-05 19:13:05
回答 2查看 126关注 0票数 0

我正在开发asp.net Core2.2中的一个网络应用程序。Web API为来自Web应用程序的每个请求提供服务。我在Web API中使用JWT令牌身份验证。该令牌包含在来自web应用程序的每个请求中。

Web应用-> Web API ->数据层-> EF核心->DB

在登录过程中,用户在web界面上输入电子邮件和密码,然后点击登录按钮。请求发送到Web API,而不是从所有其他层传递到DB。如果用户是有效的,那么在Web API中会生成一个令牌,并在响应中将其传递给Web App。现在,在从Web App到Web API的每一次请求中,Web-APP都会在报头中发送此令牌。

现在,我想添加一个像Google这样的外部身份验证提供者。问题是我不确定如何处理我的应用程序的流程?因为Google身份验证只针对web应用程序,并不影响Web API的功能。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2019-07-06 06:30:03

您需要做的是将用户身份验证委托给外部身份提供商(IdP)。在登录屏幕中,您通常会允许用户选择使用电子邮件/密码或外部IdP (例如谷歌、脸书等)。如果用户选择后者,“身份验证”步骤将由IdP负责,然后HTTP重定向到您(到您定义的URL )以及一个经过数字签名的ID令牌,该令牌包含一些用户信息(姓名、电子邮件等)

在这种情况下,应用程序流的更改如下所示:

代码语言:javascript
复制
Web APP -----> Web API ----> Data Layer----> EF Core ---->DB

   | ^
   v |

Identity Provider (e.g. Google)

请注意,往返于IdP的重定向通常基于HTTP重定向。在简单的名义情况下,您不需要从Web API层调用IdP,尽管您必须将每个受支持的API定义为ID令牌的可信颁发者(签名验证所必需的)

分步说明通常由IdP,r.f.提供。Google Sign-InFacebook login

票数 0
EN

Stack Overflow用户

发布于 2019-07-08 16:17:16

我建议您使用Identity Server4作为身份提供者。

您的web api将是一个受身份服务器保护的资源。在您的客户端应用程序中,当启动认证过程时,根据认证流程,用户将被重定向到identity server进行认证,用户可以通过Google认证选择本地数据库用户登录或外部登录。如果用户选择本地数据库,则用户将在identity server登录页上输入其凭据,并在本地数据库中验证该凭据。如果凭据正确,则身份服务器将发出令牌,并将令牌重定向回客户端应用程序。如果用户选择外部登录,用户将被重定向到Google登录页面进行登录,身份服务器将在从Google重定向后发出token (从Google发布的token获取声明),并使用token重定向回客户端应用程序。

在认证过程中,客户端可以设置自己想要访问的api资源,在用户同意访问该api资源(您的web api )后,颁发的访问令牌即可用于访问您的web api。

身份服务器文档:http://docs.identityserver.io/en/latest & Code samples

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56901959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档