现在,我试图在我的ASP.net核心Web API项目中使用Google和Facebook进行OAuth身份验证。ASP.net核心Web API:使用Facebook/Google OAuth访问令牌进行身份验证
我目前的状态是:
- 我已经在用户需要的ASP.net核心Web API项目进行认证
- 我应该用我的网角2的Web应用程序API(身份验证)
- 我有一个Android应用程序,它应该用我的网络API(身份验证)
我的目标是:
- 使用谷歌/ Facebook的OAuth的提供商进行登录
- 后:将自己的用户帐户(可能与IdentityServer4)
- 没有必要重定向到一个特殊的登录网站(如IdentityServer4解)。只需点击应用中的脸书/谷歌按钮,即可访问,完成!
在我的android和角度的应用程序,我能够从谷歌/脸书检索访问令牌。现在,我想使用OAuth隐式流程来验证用户在我的web api上的给定访问令牌(将令牌放入标头中作为不记名令牌)
有我的问题:是否有任何genric方式轻松做到这一点?我不希望为此使用Facebook /谷歌SDK。
我曾尝试以下操作:
- 使用IdentityServer4:有了这个我能够与Facebook登录/谷歌在我的WebAPI,但需要重定向到IdentityServer4登录页面。是否有任何可能的方法,只是在我的应用程序中打入google/fb-Button并登录,而不重定向到identityServer登录页面?
- 使用谷歌/脸书认证中间件(https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/):但他们没有验证我发送的持票人令牌(试过无数的方式来实现适当的验证)。这甚至有可能在web api中使用吗?
- 尝试使用Microsoft.AspNetCore.Authentication.JwtBearer的中间件,并通过自己投入了谷歌/ Facebook的必要的选项,也没有验证(藏汉无数次)
在过去的几天里,我尝试了很多可能的解决方案,以至于我完全陷入困境,失去了为实现这一目标需要做的事情。在这一点上,我已经阅读了几乎每个asp.net web api oauth tutorial/stackoverflow条目,但无法弄清楚如何在我的情况下使用它,因为我想要的。大多数教程仅适用于mvc网站或使用IdentityServer4重定向到其登录页面。
任何建议或解决方案?我错过了什么?
对于第三方认证,我相信当页面重定向回你的应用程序(用户进行身份验证),HTTP请求应包含认证数据。你可以编写一个全局过滤器来拦截它。在这里查看一些细节:https://andrewlock.net/an-introduction-to-oauth-2-using-facebook-in-asp-net-core/ – wannadream
你有没有解决这个问题? – Marcus
我发现了一个解决方案(几个星期前,忘记在这里更新): 在IdentityServer4的身份验证端点上,可以使用特殊参数立即重定向到所选身份提供商的网站,而无需通过身份服务器的登录页面。如此处所述http://docs.identityserver.io/en/release/endpoints/authorize.html acr_values中的idp:name_of_idp参数会直接重定向到身份提供程序,这正是我想要的。 – Rul3r