我需要用户使用开箱即用的身份验证登录网站。我现在需要链接到Google(和其他服务)中的用户驱动器。我想使用ASP.Net Identity OAuth身份提供程序来处理令牌交换,但我不希望它触及现有的UserCredential或将其用于SignIn
的{{1}}
我的目标是防止
UserPrincipal
返回导致修改当前登录用户身份的AuthenticateCoreAsync
问题
设置自定义grantIdentity对AuthenticationTicket
有什么影响?
SignInAsAuthenticationType是否解决了我的需求?
如果没有,何时使用?
使用Google提供商的理论代码
IOwinContext.Authentication.SignIn()
答案 0 :(得分:3)
Visual Studio 2015 MVC个人用户帐户模板执行类似这样的操作。您创建了第一个帐户(使用本地用户名和密码或远程提供程序),然后您可以将其他身份链接到该帐户。它通过在登录期间维护两个cookie来实现此链接,一个用于应用程序,一个用于外部标识。
如果您查看LinkLoginCallback下的ManageController,您应该能够在此时调整逻辑以存储外部身份令牌,但不能授予它对您的应用程序的登录访问权限。
换句话说,这样的逻辑应该在控制器逻辑的授权层进行管理,而不是在auth中间件的身份验证层进行管理。
答案 1 :(得分:0)
如果ClaimsPrincipal.Identity.IsAuthenticated为false,则用户将被登录页面挑战。