我有一个使用.net Core Identity的.net Core 2应用程序。我正在使用JWT令牌而不是cookie。我有像LinkedIn这样的外部提供程序,但是在测试已发布的(到Azure)API时,我发现Identity.External cookie未被浏览器排除。我的客户端是从节点服务器推送的vue.js应用程序,而不是.net Core Webapp。
我知道我可以手动方式管理外部登录,但是我很好奇是否还有某种方式可以使用身份中间件吗?是否可以通过AddOAuth方法中的OnCreatingTicket事件生成JWT令牌而不是Cookie来发送回客户端?
答案 0 :(得分:0)
我发现Identity.External cookie是由您在Startup.cs文件中添加的提供程序提供的。提供者(LinkedIn,Google等)响应您自己定义的CallbackPath或包含的提供者代码。然后,请求将cookie推送到响应中,但首先调用AccountController中的BUT ExternalCallback。在ExternalCallback内部,我将需要的所有提供程序信息(通常在cookie中找到)返回给我的客户端。然后,我将这些相同的信息推回到我的注册控制器操作中,并在创建用户时使其可用。无需Cookie。实际上,我从ExternalCallback端点HttpContext.Response.Cookies.Delete(“ Identity.External”)的响应(由启动时定义的提供程序传递)中删除了Cookie。