首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

仅使用外部身份提供程序而不调用HttpContext.SignInAsync时如何持久化cookie身份验证

当使用外部身份提供程序而不调用HttpContext.SignInAsync时,可以通过以下步骤来实现持久化cookie身份验证:

  1. 在应用程序的Startup.cs文件中配置身份验证服务。
    • 使用AddAuthentication方法配置身份验证服务。
    • 使用AddCookie方法添加cookie身份验证方案。
    • 设置CookieAuthenticationOptions中的相关属性,如CookieName、Expiration、SlidingExpiration等。
    • 以下是示例代码:
    • 以下是示例代码:
  • 在处理外部身份提供程序的回调中,手动创建和设置身份验证票据。
    • 在回调方法中,获取外部身份提供程序返回的用户标识信息。
    • 使用SecurityStampValidator.ValidatePrincipalAsync方法验证用户标识的安全戳。
    • 创建一个ClaimsIdentity对象,并使用外部身份提供程序返回的用户标识信息填充它。
    • 使用AuthenticationHttpContextExtensions.SignInAsync方法手动登录用户。
    • 以下是示例代码:
    • 以下是示例代码:
  • 在其他需要进行身份验证的地方,通过读取和验证cookie中的身份验证票据来实现持久化身份验证。
    • 在需要进行身份验证的地方,使用AuthenticationHttpContextExtensions.AuthenticateAsync方法读取和验证cookie中的身份验证票据。
    • 根据需要,进行进一步的权限验证或其他操作。
    • 以下是示例代码:
    • 以下是示例代码:

这样,当使用外部身份提供程序而不调用HttpContext.SignInAsync时,可以实现持久化cookie身份验证。请注意,以上代码示例中的"YourCookieName"应替换为您自己设置的cookie名称。此外,还需根据实际情况进行适当的错误处理和跳转。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IdentityServer Topics(5)- 使用第三方登录

"; }) 登录方案指定将暂时存储外部认证的结果的cookie处理程序的名称,例如 由外部提供商发送的身份单元。 这是必要的,因为在完成外部认证过程之前,通常会有几个重定向。...触发认证处理程序 您可以通过HttpContext上的ChallengeAsync扩展方法(或使用MVC ChallengeResult)调用外部认证处理程序。...ASP.NET Core提供的OpenID Connect身份验证处理程序利用了该协议的这一功能,这就是它如何实现上述的returnUrl功能。...OpenID Connect身份验证处理程序的确提供了一个可扩展点,用于将状态存储在服务器中,不是在请求URL中。...要使用IdentityServer提供的安全数据格式实现,只需在配置DI在IServiceCollection上调用AddOidcStateDataFormatterCache扩展方法即可。

2.9K30
  • asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权

    开发了一个公司内部系统,使用asp.net core 3.1。在开发用户认证授权使用的是简单的cookie认证方式,然后开发好了要写几个接口给其它系统调用数据。...在 ASP.NET Core 中,身份验证由 IAuthenticationService 负责,它供身份验证中间件使用身份验证服务会使用已注册的身份验证处理程序来完成与身份验证相关的操作。...如果调用 UseAuthentication,会注册使用之前注册的身份验证方案的中间节。 请在依赖于要进行身份验证的用户的所有中间件之前调用 UseAuthentication。...如果使用终结点路由,则必须按以下顺序调用 UseAuthentication: ● 在 UseRouting之后调用,以便路由信息可用于身份验证决策。...选择应用程序将通过以逗号分隔的身份验证方案列表传递到来授权的处理程序 [Authorize] 。 [Authorize]属性指定要使用身份验证方案或方案,不管是否配置了默认。

    4.9K40

    ASP.NET Core Cookie 认证

    CookieAuthenticationDefaults.AuthenticationScheme参数设置应用程序默认认证方法 这意味着登录成功后将为通过身份验证的用户创建一个cookie,这个cookie...; app.Run(); 调用UseAuthentication& UseAuthorization()方法 3 认证和授权 现在我们在ASP.NET Core 应用程序使用Cookie认证,在这个应用程序创建...Secured控制器的Index方法,由于用户没有登录因此将会跳转到Login页面,如下图所示: 现在输入用户名和密码点击登录,登录之后将会跳转到Secured页面,一旦用户经过身份验证,.ASPNetCore.Cookies...的 Cookie 将被创建并存储在浏览器中,我们可以在浏览器的“开发者工具”的“应用程序”区域中看到这个 Cookie,如下图所示 Cookie认证超时 我们可以使用ConfigureApplicationCookie...认证返回URL 应用程序会记住用户在身份验证之前在浏览器中打开的安全 URL,因此应用程序将用户导向到登录页面并且添加用户请求的地址,用户尝试打开的url被添加到浏览器查询字符串中,一旦用户成功授权,

    20610

    WEB安全基础(下)

    2、Web如何管理用户状态 Web应用程序大部分使用HTTP协议传输数据,HTTP协议是一种无状态的协议,每个请求都是相互独立的,服务器无法识别两个请求是否来自同一个客户端。...它的出现主要是为了解决HTTP协议的无状态性问题,实现用户状态的持久和管理。 一般情况下,常用的做法是将Session与Cookie结合使用。...特权提升:在登录的情况下假扮用户,或以用户身份登录充当理员。...以未通过身份验证的用户身份强制浏览的通过身份验证才能看到的页面、或作为标准用户访问具有相关权限的页面、或API没有对POST、PUT和DELETE强制执行访问控制。...拼接SQL语句:将用户输入直接拼接到SQL查询中,不是使用参数查询或预处理语句,导致SQL语句结构被破坏,允许攻击者执行任意SQL操作。

    9610

    【网络知识补习】❄️| 由浅入深了解HTTP(四) HTTP之cookies

    如果您的站点对用户进行身份验证,则每当用户进行身份验证,它都应重新生成并重新发送会话 Cookie,甚至是已经存在的会话 Cookie。...例如,持久服务器端会话的 Cookie 不需要对 JavaScript 可用,而应具有 HttpOnly 属性。此预防措施有助于缓解跨站点脚本(XSS)攻击。...在新版本浏览器中,为默认选项,Same-site cookies 将会为一些跨站子请求保留,如图片加载或者 frames 的调用,但只有当用户从外部站点导航到URL才会发送。...根据应用程序的不同,可能需要使用服务器查找的不透明标识符,或者研究诸如 JSON Web Tokens 之类的替代身份验证/机密机制。...在支持 SameSite 的浏览器中,这样做的作用是确保不与跨域请求一起发送身份验证 cookie,因此,这种请求实际上不会向应用服务器进行身份验证

    1.9K20

    【asp.net core 系列】13 Identity 身份验证入门

    前言 通过前两篇我们实现了如何在Service层如何访问数据,以及如何运用简单的加密算法对数据加密。这一篇我们将探索如何实现asp.net core的身份验证。 ? 1....身份验证 asp.net core的身份验证有 JwtBearer和Cookie两种常见的模式,在这一篇我们将启用Cookie作为身份信息的保存。那么,我们如何启用呢?...通常我们为了减少重复代码以及复用性等方面的考虑,会直接在控制器上设置身份验证要求,不是在控制器里所有的Action上添加验证要求。 那么,我们如何放开其中的某个请求,可以允许它不用身份验证。...这个特性的使用没啥可说的,不过需要注意的是,不要与AuthorizeAttribute一起使用。虽然编译上没啥问题,但实际上会对程序员的逻辑照成一定程度的误导。...2.保存身份身份验证,就必然需要保存身份。当我们从数据库中或者其他的三方服务中获取到用户信息后,我们需要将用户信息保存起来,不是每次都向用户或者服务提供方索求信息。

    99220

    浏览器中存储访问令牌的最佳实践

    浏览器提供了各种持久数据的解决方案。当存储令牌,您应该权衡存储选择与安全风险。...然后,攻击者可以伪装成用户,调用用户可以调用的任何后端端点,并造成严重损害。 浏览器中的存储解决方案 应用程序收到访问令牌后,需要存储该令牌以在API请求中使用它。浏览器中有多种方法可以持久数据。...如果您在本地存储中使用access token,并且攻击者设法在您的应用程序中运行外部JavaScript代码,那么攻击者可以窃取任何令牌并直接调用API。...但是,在存储令牌,这个浏览器API提供的功能和容量通常不是必需的。由于应用程序在每次API调用中都发送令牌,最好是使令牌的大小最小。...这意味着为了获得令牌,OAuth代理需要进行身份验证。因此,攻击者需要获取客户端凭据才能成功获取新令牌。在JavaScript中运行静默流没有客户端凭据将失败。

    24210

    Apache NiFi中的JWT身份验证

    为自定义外部应用程序访问使用了JWT身份验证的NIFI服务提供参考和开发依据。 背景知识 JSON Web Tokens为众多Web应用程序和框架提供了灵活的身份验证和授权标准。...在成功交换凭证之后,NiFi服务生成并返回一个JWT, web浏览器将使用它来处理所有后续请求。这种方法将对身份提供者的影响最小,还简化了完成登录过程后的应用程序访问。...在成功交换凭证之后,NiFi用户界面使用Local Storage存储JWT进行持久访问。基于令牌寿命和跨浏览器实例的持久存储,用户界面维护一个经过身份验证的会话,不需要额外的访问凭据请求。...基于这些原因,Web应用程序安全方面建议不要将任何敏感信息持久到Local Storage。 除了潜在的安全问题外,使用Local Storage还会在不同的浏览器实例中访问应用程序资源。...浏览器在重新启动维护会话cookie,这避免了与有效或陈旧令牌的持久性相关的问题。

    4K20

    .NET core3.1使用cookie进行身份认证

    一个系统,用户身份认证少不了,ASP.NET Core提供完整的解决方案Identity,用户创建和维护登录名;也提供cookie和JwtBearer认证方案,当然你可以使用第三方认证Oauth、openId...项目没有采用前后端分离,是一个标准的mvc项目,所以本文采用系统提供cookie认证 记录一下简单认证流程,(1)使用用户账号密码进行登录,验证合法登录(2)确认合法身份之后,会颁发一个认证票据(加密...用必要的 Claim来构造一个ClaimsIdentity,然后调用 SignInAsync 来登录用户。...); //3.配置认证属性 比如过期时间,是否持久。。。。...//IsPersistent = true, //持久 ,比如 登录的时候 勾选记住我 复选框 //IssuedUtc = <DateTimeOffset

    1.2K20

    在 ASP.NET Core 应用中使用 Cookie 进行身份认证

    ,不存在高并发,实现周期短,所以就没有必要为了用某些组件而用,因此这里还是选择沿用 MVC 框架,对于网站的身份认证则采用单体应用最常见的 Cookie 认证来实现,本篇文章则是如何实现的一个基础的教程...我们定义了三个重定向的页面,去告诉 Cookie 授权策略这里对应的页面在何处,同时,因为身份验证 Cookie 的默认过期时间会持续到关闭浏览器为止,也就是说,只要用户不点击退出按钮并且不关闭浏览器,...ClaimsIdentity 的持有者就是 ClaimsPrincipal ,一个 ClaimsPrincipal 可以持有多个 ClaimsIdentity,就比如一个人既持有驾照,又持有护照 最后,通过调用...HttpContext.SignInAsync 方法就可以完成登录功能,可以看到,当 Cookie 被清除后,用户也就处于登出的状态了,当然,我们也可以通过手动的调用 HttpContext.SignOutAsync...当我们需要在一个独立的类库中获取存储的用户信息,我们需要进行如下的操作 第一步,在 Startup.ConfigureServices 方法中注入 HttpContextAccessor 服务 public

    1.3K40

    竞争激烈的互联网时代,是否需要注重一下WEB安全?

    XSS 一般利用js脚步读取用户浏览器中的Cookie如果在服务器端对 Cookie 设置了HttpOnly 属性,那么js脚本就不能读取到cookie,但是浏览器还是能够正常使用cookie。...设置黑、白名单; Content Security Policy 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。...永远不要使用动态拼装sql,可以使用参数的sql或者直接使用存储过程进行数据查询存取。 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。...六、传输层保护不足 处理用户(客户端)和服务器(应用程序)之间的信息交换。应用程序经常通过网络传输敏感信息,如身份验证详细信息,信用卡信息和会话令牌。...通过使用弱算法或使用过期或无效的证书或不使用SSL,可以允许将通信暴露给不受信任的用户,这可能会危及Web应用程序和/或窃取敏感信息。 防御 启用安全HTTP并通过HTTPS强制执行凭据传输。

    75750

    .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    登陆成功后再把登录信息保存到Cookies或者Session里面,而在ASP.NET Core中我们知道,借助ASP.NET Core Identity 我们可以实现一个用于创建和维护用户登录的完整的,功能齐全的身份验证提供程序...当然,这里为了实现我们自己的登录逻辑,所以我们只使用基于基于cookie身份验证,即将基于cookie身份验证用作没有ASP.NET Core Identity的独立身份验证提供程序。...由于我们这里用到了基于cookie身份认证,所以如果应用程序没有使用Microsoft.AspNetCore.App元数据包,那么你需要再你的项目文件中添加Microsoft.AspNetCore.Authentication.Cookies...最后所有验证通过后,直接调用HttpContext.SignInAsync 方法即可登录成功.这里我们在Claim中存放了很多我们后面需要用到的信息. ?...另外一种最简单粗暴的方式就是下面这种直接关注我们的公众号了: 总结 本文我带着你一步一步的实现了登录页面的功能,包括验证及登录的过程,认证和校验使用asp.net core中基于cookie身份验证组件

    1.4K30

    理解ASP.NET Core - Cookie身份认证

    Cookie.MaxAge:Cookie的过期时间,即在浏览器中的保存时间,用于持久Cookie。 对应Cookie中的Max-Age属性,是一个时间范围。...ASP.NET Core针对登录,提供了HttpContext的扩展方法SignInAsync,我们可以使用它进行登录。以下贴出Controller的代码,前端代码请参考github的源码。...IsPersistent:票据是否持久,即票据所在的Cookie是否持久。如果持久,则会将下方ExpiresUtc的值设置为Cookie的Expires属性。默认为false。...= true来表明该Cookie持久的,这就产生了歧义,实际上Cookie并没有持久,但是代码却认为它持久化了。...; }); } } 优化改进 优化Claim以减小身份认证Cookie体积 在用户登录,验证通过后,会添加Claims,其中“类型”使用的是微软提供的ClaimTypes:

    96710

    ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇

    通俗的讲,当请求到达服务器,ASP.NET 运行时会依次触发这些事件: ? 身份验证故名思义,验证的是用户提供的凭据(Credentials)。...FormsAuthenticationModule 处理,Katana重写了表单身份验证,所以有必要比较一下传统ASP.NET MVC & Web Form 下表单身份验证与OWIN下表单身份验证的区别...使用ASP.NET Identity 身份验证 有了对身份验证和授权机制基本了解后,那么现在就该使用ASP.NET Identity 进行身份验证了。 1....ASP.NET Identity 提供了一个名为RoleManager 强类型基类用来访问和管理角色,其中T 实现了IRole 接口,IRole 接口包含了持久Role 最基础的字段(Id和Name...base(name) { } // 在此添加额外属性 } 同时,再定义一个AppRoleManager 类,如同AppUserManager 一样,它继承RoleManager,提供了检索和持久

    3.5K60

    【ASP.NET Core 基础知识】--安全性--防范常见攻击

    这篇文章我们通过对常见的网络攻击跨站脚本攻击、跨站请求伪造(CSRF)、SQL注入、敏感数据泄露、身份验证与授权防范 方面讲解如何防范网络攻击。...下面是一些常见的防御机制及其在ASP.NET Core中的代码示例: 使用参数查询: 使用参数查询可以将用户输入的数据作为参数传递给SQL查询,不是直接拼接到SQL查询语句中,从而有效地防止SQL...即使系统遭受攻击,攻击者也只能访问其被授权的资源,不能访问敏感信息。 实现个性和定制服务:身份验证和授权机制可以帮助系统根据用户的身份和权限提供个性和定制的服务,从而提升用户体验和满意度。...下面是一个简单的示例,演示如何在ASP.NET Core中配置和使用基本的身份验证和授权机制: 配置身份验证服务: 在Startup.cs文件的ConfigureServices方法中配置身份验证服务...) { // 执行身份验证逻辑 // 成功验证后,使用SignInAsync方法进行登录 await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme

    15500

    Apache Shiro权限框架理论介绍

    当配置 Shiro ,必须指定至少一个 Realm 用来进行身份验证或授权。Shiro 提供了多种可用的 Realms 来获取安全相关的数据。如关系数据库(JDBC),INI 及属性文件等。...SessionManager :session管理器,可在任何应用或架构层一致地使用 Session API SessionDAO:SessionManager 执行 Session 持久(CRUD)...logout() 方法,现有 Session 将失效,而且身份将失去关联(在Web 应用程序中,RememberMe cookie 将被删除)。...注意:WEB 应用程序记住身份往往依靠 Cookie,然而Cookie 只能在 Response 被返回后被删除,所以建议在调用subject.logout() 后立即向终端重定向一个新的视图或页面。...---- Shiro会话管理 Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如Tomcat),不管是J2SE还是J2EE环境都可以使用提供了会话管理,会话事件监听,会话存储/持久,容器无关的集群

    1.2K30

    5步实现军用级API安全

    技术工具的进步为恶意攻击者提供了多种自动攻击方式。对于许多提供数字服务的组织而言,应对威胁可能令人望而生畏。当您资源有限且希望专注于业务目标如何最好地管理安全性?...基于浏览器的应用程序在进行 API 请求通常会发送仅限 HTTP 的 cookie不是直接使用访问令牌。 API 网关是一种托管最佳实践。...这统一了您的 API 安全性,以便 API 需要接收 JWT 访问令牌,无论客户端如何。 当一个组织不熟悉 OAuth ,由于安全性的分布式特性,在实施其流程存在学习曲线。...步骤 4:加强用户身份验证 OAuth 标准未提供有关如何加强用户身份验证的建议。然而,在实践中,授权服务器应允许面向用户的应用程序对用户登录使用可靠的安全性,例如通过应用 多因素身份验证。...应用程序可以加密签名一个质询来证明其身份,并从云服务接收 JWT 响应。此 JWT 可以在代码流开始发送到授权服务器,以启用 强化的移动流。 身份验证将继续需要随着时间的推移强化。

    13310

    【ASP.NET Core 基础知识】--身份验证和授权--用户认证的基本概念

    此外,用户认证还可以实现个性服务,根据用户的身份提供定制的内容或服务。因此,用户认证对于任何需要保护数据安全或提供个性服务的系统来说都是必不可少的。...此外,用户认证还可以实现个性服务,根据用户的身份提供定制的内容或服务。...ASP.NET CORE 中的身份验证系统提供了多种身份验证方案,包括基于 cookie身份验证,基于 OAuth2 的身份验证,以及基于 JWT 的身份验证等。...此外,ASP.NET CORE 中的身份验证系统还提供了一些高级功能,如外部身份验证身份验证中间件,以及自定义身份验证方案等。...API应用程序: ASP.NET CORE用户认证可以用于保护API资源,确保只有经过身份验证和授权的客户端才能调用特定的API。

    32700
    领券