.Net SSO 单点登录方式

SSO单点登录目的

之前一般来讲系统简单,登录后 本地 cookie 加服务器 session 存储用户身份信息,以此为依据来判断用户再次登录时免验证
但随着互联网发展,很多应用 部署在不同的服务器上,而用户体系是一套,那么按照原来的方式,每个应用的服务器都需要 登录然后存session信息,这样就导致了重复操作,而sso就是为了 在多个应用 多个服务器 还只想登录一次的效果 避免重复操作。
所以 目的很简单,在多服务器中 只通过一个认证登录的地方去处理

关键技术组件

令牌(Token):传递用户身份信息的载体(如 JWT、SAML Token)。
认证中心(Identity Provider, IdP):负责用户身份验证和令牌签发。
服务提供者(Service Provider, SP):依赖认证中心验证令牌的应用系统

Net 处理单点登录的方式配置认证中心 IdentityServer
  1. 基于 OAuth 2.0/OpenID Connect
    协议特点:
    OAuth 2.0:授权框架,用于第三方应用获取资源访问权限。
    OpenID Connect (OIDC):基于 OAuth 2.0 的身份认证层,支持 SSO。
    适用场景:互联网应用、跨平台服务(如第三方登录)。

  2. 场景说明
    假设企业使用 独立身份提供者(IdP)(如 IdentityServer、Azure AD 或 Okta)管理用户身份,多个应用(Service Providers, SP)通过该 IdP 实现 SSO。例如:
    应用A:https://app1.company.com(内部 HR 系统)
    应用B:https://app2.company.com(项目管理平台)
    用户登录任意应用后,可无缝访问其他应用,无需重复认证
    注!!登录信息的输入凭证都是在IDP输入不在应用A和应用B输入

  3. 实现步骤(以 OIDC + ASP.NET Core 为例)
    配置 Identity Provider(以 IdentityServer 为例)
    步骤:

    1. 部署 IdentityServer(开源 IdP)。
    2. 注册客户端(应用A和应用B)并配置重定向 URI。
    3. 定义用户身份信息(Claims)和 API 资源(Scopes)
// IdentityServer 的 Config.cs
public static class Clients
{
   
   
    public static IEnumerable<Client> GetClients()
    {
   
   
        return new List<Client>
        {
   
   
            new Client
            {
   
   
                ClientId = "app1",
                ClientSecrets = {
   
    new Secret("app1-secret".Sha256()) },
                AllowedGrantTypes = GrantTypes.Code,
                RedirectUris = {
   
    "https://app1.company.com/signin-oidc" },
                AllowedScopes = {
   
    "openid", "profile", "email" }
            },
            new Client
            {
   
   
                ClientId = "app2",
                ClientSecrets = {
   
    new Secret("app2-secret".Sha256()) },
                AllowedGrantTypes = GrantTypes.Code,
                RedirectUris = {
   
    "https://app2.company.com/signin-oidc" },
                AllowedScopes = {
   
    "openid", "profile", "email" }
            }
        };
    }
}

ASP.NET Core 代码配置:
在 Startup.cs 中添加 OIDC 认证中间件

// ASP.NET Core 中配置 OIDC 认证
// 完整 OIDC 配置示例(Startup.cs)
services.AddAuthentication(options =>
{
   
   
    options.DefaultScheme = "Cookies"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值