goo*_*ate 15 c# oauth asp.net-web-api owin asp.net-identity-3
我需要用户使用开箱即用的身份验证登录到网站.我现在需要链接到Google(和其他服务)中的用户驱动器.我想使用ASP.Net身份的OAuth身份提供商来处理令牌交换,但我不希望它触及现有UserCredential或使用它SignIn的UserPrincipal
我的目标是预防
AuthenticateCoreAsync从返回AuthenticationTicket导致修改到当前登录的用户身份题
设置自定义grantIdentity有什么影响IOwinContext.Authentication.SignIn()?
SignInAsAuthenticationType能解决我的需求吗?
如果没有,何时使用?
使用Google提供商的理论代码
// The cookie needs to be First in the chain.
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "CustomExternal",
AuthenticationMode = AuthenticationMode.Passive,
CookieName = "MyAwesomeCookie",
ExpireTimeSpan = TimeSpan.FromMinutes(5),
//Additional custom cookie options....
});
//Note that SignInAsAuthenticationType == AuthenticationType
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
{
AuthenticationType = "GoogleBackOffice",
ClientId = "abcdef...",
ClientSecret = "zyxwv....",
SignInAsAuthenticationType = "CustomExternal"
});
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2015 MVC 个人用户帐户模板执行类似的操作。您创建第一个帐户(使用本地用户名和密码或远程提供商),然后可以将其他身份链接到该帐户。它通过在登录期间维护两个 cookie 来实现此链接,一个用于应用程序,一个用于外部身份。
如果您查看 LinkLoginCallback 下的 ManageController,您应该能够调整此时的逻辑以存储外部身份令牌,但不授予其对应用程序的登录访问权限。
换句话说,这样的逻辑应该在控制器逻辑的授权层进行管理,而不是在身份验证中间件的身份验证层进行管理。
| 归档时间: |
|
| 查看次数: |
2187 次 |
| 最近记录: |