首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

從 WinForm 到 Web 實現單點登入(SSO)完整方案

     編輯:關於.NET

單點登入(Single Sign On,SSO)是企業業務整合的主流解決方案。定義:在多個應用系統中,用戶僅需登入一次即可訪問所有互信系統,包含將主登入映射至其他系統同一用戶的機制。

SSO 核心流程

  1. 用戶首次訪問應用系統 1,未登入則導向認證系統。
  2. 認證系統驗證登入資訊,通過後返回認證憑據。
  3. 用戶訪問其他應用時攜帶憑據,應用系統將憑據送認證系統驗證合法性。
  4. 驗證通過,用戶無需再次登入即可訪問應用系統 2、3。

實現步驟與代碼

1. WinForm 端登入認證中心

public CKey UserLogin(CUser cuser)

2. 認證中心生成票據並返回

CKey ckey = new CKey();
ckey.client_key = DateTime.Now.ToString();
ckey.token = System.Guid.NewGuid().ToString();
ckey.user = cuser.user;
UpdateKey(ckey);

3. WinForm 呼叫 Web 功能時攜帶票據

System.Diagnostics.Process.Start(
    @"https://localhost/WebLogin/Login.aspx?user=" + ckey.user +
    "&client_key=" + ckey.client_key +
    "&token=" + ckey.token);

4. Web 頁面驗證票據

public bool UserCheck(CKey ckey)

5. 驗證通過,實現 SSO

資料庫表結構

-- 用戶表
CREATE TABLE [dbo].[Sys_user](
    [username] [nvarchar](50) NOT NULL,
    [pwd] [nvarchar](50) NOT NULL
) ON [PRIMARY]

-- 票據表
CREATE TABLE [dbo].[token](
    [client_key] [nvarchar](50) NOT NULL,
    [token] [nvarchar](50) NOT NULL,
    [username] [nvarchar](50) NOT NULL,
    [act_state] [nvarchar](2) NOT NULL
) ON [PRIMARY]

本文配套原始碼可供下載參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved