最近几天,我一直在尝试让我的ASP.net核心Web Api项目能够使用Google和Facebook的OAuth身份验证。
目前的状态是:
- 我有一个ASP.net核心Web Api项目,需要对用户进行身份验证
- 我有一个Angular 2 Web应用程序,它应该使用我的Web Api(带有身份验证)
- 我有一个Android应用程序,它应该使用我的Web Api(带有身份验证)
我的目标是:
- 使用Google / Facebook作为OAuth提供商进行登录
- 以后:添加自己的用户账户(可能使用IdentityServer4)
- 无需重定向到特殊的登录网站(如IdentityServer4解决方案)。只需点击应用程序中的facebook / google按钮,允许访问即可完成!
在我的Android和Angular应用程序中,我能够从Google/Facebook检索访问令牌。现在,我想使用OAuth隐式流程,使用给定的访问令牌(将令牌放入标头作为Bearer令牌)在我的Web API上对用户进行身份验证。
这就是我的问题:是否有任何通用的方法可以轻松地实现此操作?我不想使用Facebook/Google的SDK来完成此操作。
我尝试过以下方法:
- 使用IdentityServer4: 通过这个我可以在我的WebAPI上使用Facebook/Google登录,但需要重定向到IdentityServer4的登录页面。是否有可能仅点击应用程序中的Google/FB按钮并登录,而无需重定向到identityServer登录页面?
- 使用google/facebook身份验证中间件 (https://learn.microsoft.com/en-us/aspnet/core/security/authentication/social/): 但它们不验证我发送的令牌(尝试了无数种方法来实现正确的验证)。在Web API中使用这个是否可行?
- 尝试使用Microsoft.AspNetCore.Authentication.JwtBearer-Middleware并自己放入必要的选项以供Google/Facebook使用,但也没有验证(同样尝试了无数次)。
有什么建议或解决方案吗?我错过了什么吗?