关于IdentityServer4 + Asp net core Identity

Asp net core Identity 本身就是一个认证框架了,然而在我看来有其局限性:

  1. 前后端没有分离,较难通过外部接口访问实现认证并且跳转回去,对于微服务适用性较差。
  2. 认证过程并不一定安全。

然而与IdentityServer4结合之后以上两方面得到了弥补,因为其使用了OpenID ConnectOAuth 2.0,保证了认证过程的安全性。同时identityServer4配置了登陆和登出时重定向路径,使其即使从客户端(微服务)登陆登出返回时也能返回到正确客户端(微服务)。

  • Client 定义了AllowedGrantType
    分别是ClientCredentials(用户凭证),ResourseOwnerPassword(资源拥有者密钥),Implicit(隐式流), HybridAndClientCredentials(混合流)

    1. ClientCredentials: 不需要定义用户和密钥,直接通过client自身的凭证进行访问。
    2. ResourseOwnerPassword: 须定义用户和密钥(Config.cs中定义或外部获取),通过用户名密钥访问。
    3. Implicit: 先向认证服务器获取access token,而后用token访问资源,不允许使用refresh token和长时间有效的access token
    4. HybridAndClientCredentials: 同样是先向认证服务器获取identity token,而后用token获取access token(更安全的方式获取,以防止暴露),允许使用refresh token和长时间有效的access token。对于需要手动登陆之后访问资源的情况,通常采用此方式。
  • 关于登出
    public async Task Logout()
    {
    await HttpContext.SignOutAsync("Cookies");
    await HttpContext.SignOutAsync("oidc");
    }
    登出时客户端需要写上面的两句代码,第一句清除客户端cookie,第二句跳转至服务器进行登出。然后第二句跳转的函数虽然是Logout,但是却会带上string logoutid的参数。然而在Asp.net core identity 框架中不存在带参数的logout函数,需要自己添加。
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值