Asp.net 从cookie社交登录移动到令牌社交登录
这是我在StackExchange上发布的一篇后续文章,我没有得到答案。也许它放得不合适,应该在这里。但不管怎样,我又打了一些,又砍又改,现在我离得更近了,但需要更多的帮助 我正在尝试使用Owin和各种Katana库实现Facebook登录(以及后来的其他登录)。我只做登录,没有注册,没有ASP.NET数据库。我不是在使用ASP.NET身份信息(就像在个人帐户中使用默认的ASP.NET项目一样),这是90%的教程告诉您要做的。对不起,如果我听起来很沮丧。我设法找到了其他人,他们在没有身份gubbins的情况下打破了模式并实现了OWIN,我对此做了大量的阅读。我想我只是需要帮助连接最后几个点 这适用于后端带有Web API的SPA。所以我自然而然地倾向于持有OAuth代币 我已经设法让事情以一种曲奇饼般的方式进行,使用了来自的一些指导。我采用了它的方法,现在我可以登录Facebook,当回调操作被点击时,User.Identity成功设置为我的Facebook声明标识 问题是,对于我的Web API,我希望调用auth/facebook,或者通过其他方式,将我的身份的OAuth承载令牌获取给用户,以用于将来的请求,而不是cookie 从某种意义上说,我最好还是从这个饼干变成一个代币?怎么做?还是有更好的方法 这是我的Startup.cs代码Asp.net 从cookie社交登录移动到令牌社交登录,asp.net,owin,Asp.net,Owin,这是我在StackExchange上发布的一篇后续文章,我没有得到答案。也许它放得不合适,应该在这里。但不管怎样,我又打了一些,又砍又改,现在我离得更近了,但需要更多的帮助 我正在尝试使用Owin和各种Katana库实现Facebook登录(以及后来的其他登录)。我只做登录,没有注册,没有ASP.NET数据库。我不是在使用ASP.NET身份信息(就像在个人帐户中使用默认的ASP.NET项目一样),这是90%的教程告诉您要做的。对不起,如果我听起来很沮丧。我设法找到了其他人,他们在没有身份gubb
public class Startup
{
// public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; private set; }
public void Configuration(IAppBuilder app)
{
ConfigureOAuth(app);
// other standard stuff (I think)
}
private void ConfigureOAuth(IAppBuilder app)
{
// lots of commented out code of me trying to do this using a custom provider and OAuth
var cookieOptions = new CookieAuthenticationOptions
{
LoginPath = new PathString("api/auth/facebook")
};
app.UseCookieAuthentication(cookieOptions);
app.SetDefaultSignInAsAuthenticationType(cookieOptions.AuthenticationType);
app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
AppId = fbAppID,
AppSecret = fbAppSecret,
});
}
}
这是我的身份验证控制器代码
[RoutePrefix("api/auth")]
public class AuthController : ApiController
{
[AllowAnonymous]
[Route("facebook")]
public IHttpActionResult GetFacebookChallenge()
{
return new ChallengeResult("Facebook", "api/auth/callback", this.Request);
}
[Route("callback")]
[HttpGet]
public IHttpActionResult Callback()
{
var info = Request.GetOwinContext().Authentication.GetExternalLoginInfo();
return Ok(info);
}
}
当前,回调操作返回null,因为info为null,但是User.Identity设置了正确的声明,一切都很好。以前的一个实现使其处于回调不会对User.Identity进行身份验证的状态,但它可以检索外部登录标识。但同样,我无法通过身份验证并从中获取令牌。我是否更接近这种方法
很抱歉问了这么长的问题。如果你需要我发布更多的代码,请让我知道,为了简洁,我已经尽量减少了 根据对你的问题的快速回顾,你似乎对cookie有问题。。存储在cookie中的令牌,您希望在服务器端而不是cookie中使用该令牌,对吗?嗨,使用像这样工作的应用程序,我将cookie或auth令牌存储在SPA中,然后将其与后续HTTP XHR请求一起作为自定义头传输(X-HTTP-auth-token={cookiedata}。在我的情况下,这些令牌非常小,因此如果令牌很大,则不太好。我总是在这里创建自定义身份验证处理程序。您有两个选项。您可以在每次请求时使用Facebook或您使用的任何身份提供器重新验证该令牌。或者,在我的情况下,您在数据库中信任该令牌一段时间。