@manhng

Welcome to my blog!

Identity Server 4 and SSO

March 30, 2022 13:12

1) Identity Server 4 and SSO (edit)

Duende Software

IdentityServer/IdentityServer4: OpenID Connect and OAuth 2.0 Framework for ASP.NET Core (github.com)

Identityserver4 - OpenID Connect and OAuth 2.0 Framework for ASP.NET Core

1.1) Skoruba.IdentityServer4.Admin

The administration for the IdentityServer4 and Asp.Net Core Identity

skoruba/IdentityServer4.Admin: The administration for the IdentityServer4 and Asp.Net Core Identity (github.com)

  • Skoruba.IdentityServer4.Admin
  • Skoruba.IdentityServer4.STS.Identity

Database:

  • SqlServer
  • MySql
  • PostgreSQL

Technical Stack:

  • ASP.NET Core
  • IdentityServer4.EntityFramework
  • ASP.NET Core Identity
  • XUnit
  • Fluent Assertions
  • Bogus
  • AutoMapper
  • Serilog

1.2) ASP.NET Core 3.1 Open Source SSO. Built within IdentityServer4

ASP.NET Core 3.1 Open Source SSO. Built within IdentityServer4

https://github.com/brunohbrito/JPProject.IdentityServer4.SSO

This is the full version of JP Project. It provide SSO and an Api where it's possible to manage both IdentityServer4 and ASP.NET Core Identity.

The main goal of JP Project is to be a Management Ecosystem for IdentityServer4 and ASP.NET Identity. Helping Startup's and companies to Speed Up Microservices Environment. Providing tools for an OAuth 2.0 Server and User Management. It's highly modular and easy to change for .NET teams.

Built with IdentityServer4. An OpenID Connect and OAuth 2.0 framework for ASP.NET Core.

SSO Features:

  • Single Sign On
  • Register users
  • Recover password flow
  • MFA
  • Federation Gateway (Login by Google, Facebook.. etc)
  • Argon2 password hashing
  • CSP Headers
  • Event monitoring (For compliance scenarios)
  • Key Material Management
  • ASP.NET Core Dataprotection keys management

2) ASP.NET Core Web API

2.1) Fullstack Hero

.NET Web API Boilerplate - fullstackhero

fullstackhero/dotnet-webapi-boilerplate: Clean Architecture Template for .NET 6.0 WebApi built with Multitenancy Support. (github.com)

Technical Stack:

  • Built on .NET 6.0
  • Follows Clean Architecture Principles
  • Domain Driven Design
  • Completely Documented at fullstackhero.net
  • Multi Tenancy Support with Finbuckle
    • Create Tenants with Multi Database / Shared Database Support
    • Activate / Deactivate Tenants on Demand
    • Upgrade Subscription of Tenants - Add More Validity Months to each tenant!
  •  Supports MySQL, MSSQL, Oracle & PostgreSQL!

2.2) ApiBoilerPlate

ApiBoilerPlate.AspNetCore - Visual Studio Marketplace

proudmonkey/ApiBoilerPlate: A simple yet organized project template for building ASP.NET Core APIs in .NET Core 3.1 (github.com)

Tools and Frameworks Used

3) Mobile Project

  • iOS: Eclipse, XCode and Objective-C, Swift, Xamarin, Unity
  • Android: Eclipse, Android SDK, Android Studio and Kotlin, Java and C++
  • Windows: Visual Studio and Windows Mobile, Windows Phone, Xamarin
  • Hybrid: Visual Studio Code and React Native, Flutter
  • Others: Apache Cordova, PhoneGap, Titanium, Ionic

4) Desktop Project

  • Windows Forms
  • WPF (XAML, MVVM)
  • Electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS

5) Web Project

PMBOK Guide

  • Communications Management
  • Scope Management
  • Resource Management
  • Time Management
  • Risk Management
  • Quality Management

Software Development Models

  • Waterfall – mô hình thác nước
  • V-model – mô hình chữ V
  • Iterative – mô hình lặp – Mô hình Agile và quy trình Scrum

Type

  • Web Services
  • WCF HTTP Web Services
  • ASP.NET Web Forms
  • ASP.NET MVC 5 + jQuery, AdminLTE, Bootstrap, Calendar, DateTimePicker, Select2, DataTables, Moment.js, AutoNumeric.js
  • ASP.NET Core MVC + jQuery, AdminLTE, Bootstrap, Calendar, DateTimePicker, Select2, DataTables, Moment.js, AutoNumeric.js
  • ASP.NET Web API 2 + ReactJS
  • ASP.NET Core Web API + ReactJS
  • ASP.NET Core Web API + Angular
  • ASP.NET Core Web API + VueJS
  • ASP.NET Core MVC + Razor Pages
  • ASP.NET Core Blazor

Databases

  • Oracle
  • MS SQL Server
  • PostgreSQL
  • MySQL
  • Firebird
  • SQLite
  • MS Access
  • MS SQL Server Compact
  • MS SQL Server Express
  • MS SQL Server Express LocalDB
  • XML
  • JSON

Tools

  • Codemaid
  • DBeaver
  • Beyond Compare
  • Postman
  • Fiddler4
  • BareTail
  • Notepad++
  • cURL
  • Dapper
  • DbUp
  • PowerShell
  • IIS
  • CI/CD: Jenkins
  • Azure DevOps
  • Visio, Draw.io
  • Sonarqube
  • JetBrains ReSharper
  • OzCode
  • Clean Architecture
  • SOLID
  • Clean Code
  • TOP 10 OWASP

Methods

  • Monolithic Architecture
  • Service-Oriented Architecture (SOA)
  • Microservice Architecture
  • Serverless Architecture
  • Pair Programming
  • Object Oriented Programming (OOP)
  • Test Driven Development (TDD)
  • Domain Driven Design (DDD)
  • Mô hình Agile và quy trình Scrum

Security

  • ASP.NET Membership: ASP.NET Membership Provider
  • ASP.NET Simple Membership
  • ASP.NET Identity
  • Microsoft Identity
  • Identity Server 4 (OAuth2 and OpenID Connect)
    • IdentityServer4 and SSO
    • JWT Bearer and Refresh Token
    • Securing Microservices with IdentityServer4, OAuth2 and OpenID Connect fronted by Ocelot API Gateway
  • OpenIddict
  • Keycloak
  • Auth0
  • Duende IdentityServer / Identity Server 5
  • Top 10 OWASP

Source Code:

ASP.NET Core 3.1 API - JWT Authentication with Refresh Tokens | Jason Watmore's Blog

Token Based Authentication Using ASP.Net Web API, OWIN and Identity With Entity Framework (c-sharpcorner.com)

JWT Authentication And Authorization In .NET 6.0 With Identity Framework (c-sharpcorner.com)

How to Implement JWT Authentication in Web API Using .Net 6.0, Asp.Net Core (c-sharpcorner.com)

Source Code Cookie Authentication:

Cookie Authentication In ASP.NET Core (c-sharpcorner.com)

doanhnghiepvn/CookieAuthentication: Implement Cookie Authentication in ASP.NET Core without using Identity. (github.com)

Authentication And Authorization In ASP.NET Core MVC Using Cookie (c-sharpcorner.com)

doanhnghiepvn/CookieAuthenticationInAsp.NetCore: Authentication and Authorization in Asp.Net Core MVC using Cookie (github.com)

Secure Serverless Azure Functions Using JWT Auth And C# (.Net 6) (c-sharpcorner.com)

doanhnghiepvn/AzureFuntions_Auth_JWT: Secure Azure Functions using .Net 6.0 and JWT Tokens (github.com)

Article:

LocalStorage và Cookies – Chọn cái nào để lưu JWT Tokens hiệu quả và an toàn? – Duy PT Blog

Access Token thường là các JWT Tokens tồn tại trong một khoảng thời gian ngắn, được tạo ra từ phía server, và được server yêu cầu đính kèm trong mỗi Http Request để phía server xác thực người dùng.

Refresh Token thường là các chuỗi string đặc thù nào đó được lưu trong database của server, được sử dụng để tạo ra các Access Token mới mỗi khi chúng hết hạn.

https://blog.logrocket.com/jwt-authentication-best-practices/

In this JWT authentication tutorial, you’ll learn when to use JWT, why you shouldn’t use JWT for sessions, and how to store JWTs in cookies to prevent security issues. We’ll also go over some general JWT best practices.

Where to Store JWTs - Cookies vs HTML5 Web Storage | Stormpath

LocalStorage vs. Cookies: All You Need to Know About Storing JWT Tokens Securely in the Front-End - JavaScript inDepth

AngularJS - How to store a JWT token inside an HTTP only cookie? - Stack Overflow

Cookies vs. Tokens: The Definitive Guide - DZone Integration

Cross Site Scripting (XSS) and Cross-Site Request Forgery (XSRF or CSRF)

HTML5 Security - OWASP Cheat Sheet Series

Community OSS authentication options for ASP.NET Core | Microsoft Docs

OWASP Top Ten Web Application Security Risks | OWASP

Securing Microservices with IdentityServer4, OAuth2 and OpenID Connect fronted by Ocelot API Gateway | by Mehmet Özkaya | aspnetrun | Medium

Performance

  • Database design, Database query, Code (Best Practice), Deployment view, Infrastructure view, Hardware, Software
  • Cache in-memory in ASP.NET Core
  • Distributed Redis Caching In ASP.NET Core
  • HAProxy and Load Balancing
  • Cloud Computing Services
    • Microsoft Azure
    • Amazon Web Services (AWS)
    • Google Cloud Platform

New:

  • Kubernetes
  • Docker
  • AutoWrapper
  • FluentValidation
  • Fluent Assertions
  • FakeItEasy
  • Bogus
  • xUnit
  • Moq
  • Shouldly

Clean Architecture with ASP.NET Core 6.0

  • N-Layered Architecture
  • Onion Architecture
  • Hexagonal Architecture
  • Screaming Architecture
  • Clean Architecture

https://github.com/dotnet-architecture/eShopOnContainers

https://github.com/fullstackhero/dotnet-webapi-boilerplate 

https://github.com/jasontaylordev/CleanArchitecture

https://github.com/ardalis/CleanArchitecture

https://github.com/aspnetrun/run-aspnet-identityserver4

https://github.com/asc-lab/dotnetcore-microservices-poc

https://github.com/vietnam-devs/coolstore-microservices

https://github.com/EdwinVW/pitstop

https://github.com/madslundt/NetCoreMicroservicesSample

https://github.com/SteeltoeOSS/steeltoe

https://github.com/phongnguyend/Practical.CleanArchitecture

Best Practices:

JavaScript libraries:

1) Benchmark.js là một thư viện Javascript cung cấp khả năng so sánh hiệu năng của các javascript functions.

2) Velocity là một thư viện JavaScript được xây dựng để tạo animation nhanh. Tốc độ của Velocity khi hiển thị hoạt ảnh cực kỳ nhanh. Nó vượt trội hơn jQuery và thậm chí cả CSS.

3) SVG.js là một thư viện nhẹ để thao tác và tạo ảnh động cho SVG.

4) Vuejs là một thư viện mã nguồn mở miễn phí với kích thước nhỏ gọn giúp bạn xây dựng giao diện cho người dùng một cách nhanh chóng (đặc biệt là single page web application).

5) AngularJS giúp bạn có thể dễ dàng xây dựng ứng dụng web, mobile web, native mobile và native desktop.

6) jQuery là một thư viện mã nguồn mở nhỏ gọn, miễn phí cung cấp nhiều tính năng hữu ích dành cho phát triển website như là AJAX, thao tác với CSS, DOM, HTML một cách dễ dàng, xử lý sự kiện (event), hiệu ứng chuyển động...

7) Lodash giúp cho việc bạn xử lý các vấn đề liên quan tới Array, String, Number, Object... bằng ngôn ngữ lập trình Javascript một cách dễ dàng.

8) AnimeJS là thư viện giúp bạn có thể dễ dàng xây dựng hiệu ứng chuyển động nhanh chóng dành cho trang web bằng cách làm việc với các thuộc tính CSS, SVG, thuộc tính DOM, Javascript Object...

9) AOS giúp bạn tạo ra các hiệu ứng chuyển động cho các thành phần website khi người dùng scroll trang web.

10) Popper là một thư viện được viết bằng javascript với kích thước chỉ khoảng 3kB giúp bạn nâng cao tốc độ của website mà vẫn giữ được các chức năng mà một tooltip cần có.

11) Owl Carousel 2 là một thư viện mã nguồn mở giúp bạn xây dựng carousel một cách dễ dàng và có tính thẩm mỹ cao.

12) D3.js là một thư viện javascript được xây dựng cho việc trực quan hóa dữ liệu và hiển thị thông qua SVG, Canvas, HTML...

13) Chart.js giúp bạn tạo các biểu đồ đẹp mắt cho trang web của mình. Nó có rất nhiều biểu đồ khác nhau và cho phép chúng ta linh hoạt xử lý các dữ liệu truyền vào cho biểu đồ khi sử dụng thư viện. Ngoài ra nó cũng thường xuyên được cập nhật các phiên bản mới và được responsive trên nhiều màn hình thiết bị khác nhau.

14) SweetAlert là một thư viện mã nguồn mở giúp bạn xây dựng những thông báo cho trang web một cách nhanh chóng với tính thẩm mỹ cao và nhiều hiệu ứng chuyển động đẹp mắt.

15) Momentjs giúp bạn dễ dàng xử lý ngày giờ bằng Javascript một cách dễ dàng.

16) Video JS là trình phát video được xây dựng từ nền tảng Video HTML5 hỗ trợ cho nhiều định loại định dạng khác nhau như Youtube, Vimeo, streaming...

17) Highlight JS là một thư viện mã nguồn mở được xây dựng bằng Javascript giúp bạn làm nổi bật đoạn code ở trong trang web và có thể chạy trên cả trình duyệt cũng như trên máy chủ.

18) Fullpagejs giúp bạn tạo fullscreen scrolling dành cho website.

19) Print.js là một thư viện Javascript nhỏ gọn giúp bạn có thể in file trực tiếp ngay trên trang web mà không cần phải chuyển hướng hay sử dụng nhúng (embeds).

20) Math JS là một thư viện toán học mã nguồn mở, giúp bạn linh hoạt trong việc tính toán và xử lý với nhiều kiểu dữ liệu khác nhau như là numbers, big number (số lớn), complex number (số phức tạp), phân số, unit (đơn vị) và ma trận.

21) Validate JS là một thư viện mã nguồn mở cung cấp cho bạn cách thức để kiểm tra các đối tượng Javascript trong trang web. Mục tiêu chính của nó là thiết lập các validation dưới dạng JSON và có thể chia sẻ qua lại giữa trình duyệt và máy chủ. Nó cung cấp cho chúng ta rất nhiều các phương thức validate như là xác thực ngày tháng, email, format, kiểm tra loại của đối tượng...

42 Thư Viện Và Framework Javascript Hay Dành Cho Front-end Developer (niemvuilaptrinh.com)

Happy Coding!

Keycloak and SSO in ASP.NET MVC 5 + ASP.NET Core MVC

October 30, 2019 11:58

Keycloak and SSO in ASP.NET MVC 5 (edit)

https://github.com/dylanplecki/KeycloakOwinAuthentication/wiki/ASP.NET-MVC-Tutorial

Keycloak and SSO in ASP.NET Core

https://medium.com/@xavier.hahn/adding-authorization-to-asp-net-core-app-using-keycloak-c6c96ee0e655

An example single page asp.net core application that uses Angular and Keycloak as identity provider.

https://github.com/Gimly/SampleNetCoreAngularKeycloak

ASP.NET Web API 2

https://github.com/SoftUni/SPA-with-AngularJS/tree/master/Ads-REST-Services

https://nakov.com/blog/2014/12/22/webapi-owin-identity-custom-login-service/

https://www.red-gate.com/simple-talk/dotnet/asp-net/introducing-single-sign-on-to-an-existing-asp-net-mvc-application/

https://dzone.com/articles/learn-how-to-secure-your-aspnet-mvc-app-with-sso

https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/individual-accounts-in-web-api

https://www.codeproject.com/Articles/1183150/Securing-ASP-NET-Web-API-using-Custom-Token-Based

Keycloak - Server Application Guide

https://scalac.io/user-authentication-keycloak-1/

https://www.keycloak.org/docs/7.0/server_admin/

Xác thực tiếng Việt

https://medium.com/@hoantv1506/h%C6%B0%E1%BB%9Bng-d%E1%BA%ABn-oauth2-v%C3%A0-x%C3%A2y-d%E1%BB%B1ng-m%E1%BB%99t-authorization-server-c%C6%A1-b%E1%BA%A3n-cho-ng%C6%B0%E1%BB%9Di-m%E1%BB%9Bi-b%E1%BA%AFt-%C4%91%E1%BA%A7u-9177c2807a64

SSO in ASP.NET

https://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic

https://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl-2

https://www.codeproject.com/articles/1140228/implementation-of-single-sign-on-sso-in-asp-net-mv

https://www.scoop.it/topic/net-coding

https://silverhair2010.wordpress.com/2012/11/21/single-sign-on-sso-for-cross-domain-asp-net-applications-refer/

https://sudoman1012.wordpress.com/2015/02/11/dev-tip-single-sign-on-sso-for-cross-domain-asp-net-applications/

Hi nageshrgosul,

According to your description, as far as I know, you want to implement cross domain SSO,

Single Sign On (SSO) for cross-domain ASP.NET applications: Part-I - The design blue print:

https://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic 

Single Sign On (SSO) for cross-domain ASP.NET applications: Part-II - The implementation:

https://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl 

Introducing Single Sign-on to an existing ASP.NET MVC application:

https://www.red-gate.com/simple-talk/dotnet/asp-net/introducing-single-sign-on-to-an-existing-asp-net-mvc-application/ 

Best Regards,

Eric Du

SSO in .NET Core

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/community?view=aspnetcore-2.0

  • AspNet.Security.OpenIdConnect.Server (ASOS)
  • Gluu Server
  • IdentityServer
  • OpenIddict

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-3.1&tabs=visual-studio

IdentityServer4 is an OpenID Connect and OAuth 2.0 framework for ASP.NET Core. IdentityServer4 enables the following security features:

  • Authentication as a Service (AaaS)
  • Single sign-on/off (SSO) over multiple application types
  • Access control for APIs
  • Federation Gateway

https://forums.asp.net/t/2098726.aspx?How+can+i+do+a+Single+Sign+On+Step+by+step+Asp+net+MVC+5+Authentication+

http://forums.asp.net/t/1335297.aspx?how+to+implement+single+sign+on+in+c+net

http://arunendapally.com/post/implementation-of-single-sign-on-(sso)-in-asp.net-mvc

http://www.codeproject.com/Articles/429166/Basics-of-Single-Sign-on-SSO

https://msdn.microsoft.com/en-us/library/ms972971.aspx

SSO:

https://www.learmoreseekmore.com/2019/09/part-1-share-authentication-cookie-sso.html (Show Code)

https://www.miniorange.com/asp.net-single-sign-on-(sso) (Show Code)

https://www.objectivity.co.uk/blog/introducing-sso-single-sign-existing-asp-net-mvc-application/

https://developers.onelogin.com/ (Chargeable)

SSO:

https://stackoverflow.com/questions/14309090/c-sharp-asp-net-single-sign-on-implementation

There are multiple options to implement SSO for a .NET application.

Check out the following tutorials online:

Basics of Single Sign on, July 2012

http://www.codeproject.com/Articles/429166/Basics-of-Single-Sign-on-SSO

GaryMcAllisterOnline: ASP.NET MVC 4, ADFS 2.0 and 3rd party STS integration (IdentityServer2), Jan 2013

http://garymcallisteronline.blogspot.com/2013/01/aspnet-mvc-4-adfs-20-and-3rd-party-sts.html

The first one uses ASP.NET Web Forms, while the second one uses ASP.NET MVC4.

If your requirements allow you to use a third-party solution, also consider OpenID. There's an open source library called DotNetOpenAuth.

For further information, read MSDN blog post Integrate OpenAuth/OpenID with your existing ASP.NET application using Universal Providers.

Hope this helps!

SSO:

Single Sign On (SSO) for cross-domain ASP.NET applications: Part-II - The implementation

Original source ccan be located at http://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl

Al-Farooque Shubho, 4 Oct 2010

Implementation approach of a domain independent Single Sign On (SSO) for ASP.NET applications.

SSO in ASP.NET MVC:

http://arunendapally.com/post/implementation-of-single-sign-on-(sso)-in-asp.net-mvc

https://dzone.com/articles/learn-how-to-secure-your-aspnet-mvc-app-with-sso

SSO in Microsoft:

Authorized client applications section, you identify the applications that you want to authorize to your add-in's web application. Each of the following IDs needs to be pre-authorized.

  • d3590ed6-52b3-4102-aeff-aad2292ab01c (Microsoft Office)
  • ea5a67f6-b6f3-4338-b240-c655ddc3cc8e (Microsoft Office)
  • 57fb890c-0dab-4253-a5e0-7188c88b2bb4 (Office on the web)
  • 08e18876-6177-487e-b8b5-cf950c1e598c (Office on the web)
  • bc59ab01-8403-45c6-8796-ac3ef710b3e3 (Outlook on the web)

SSO with Microsoft Federation (ADFS)

October 11, 2019 08:38

Single-Sign On (SSO) with Microsoft Federation (ADFS)

  • Microsoft Federation (ADFS)
  • WS-Federation (Web Services Federation)WS-TrustWS-Security
  • Single-Sign On (SSO)
  • Active Directory Federation Services (ADFS)
  • Azure Active Directory (AAD)
  • OAuth2 + OIDC
  • SOAP (SOAP Web Services)
  • SAML2 - Security Assertion Markup Language (SAML2)
  • HTTP/HTTPs - HyperText Transfer Protocol
  • WS-Federation, SAML, OAuth, Open ID, Open ID Connect

Cookie

Cookie là gì?
Cookie thường là một file text nhỏ được lưu trong máy của người dùng. Nó lưu trữ một số thông tin về người dùng như thông tin đăng nhập, các lựu chọn cá nhân hóa… Cookie được sinh ra khi bạn dùng trình duyệt để vào một trang web mà sử dụng cookie để lưu lại thông tin, trạng thái hiện tại của bạn.
Phân loại Cookie
Cookie được chia làm 2 loại dựa theo tính chất của nó.
- Session cookie: temporary cookie, non-persist cookie, transient cookie là những tên gọi khác của nó. Loại cookie này được lưu trữ trong bộ nhớ tạm thời và được hủy ngay sau khi trình duyệt close. Session cookie thường được dùng để lưu trữ Session ID.
- Persistent cookie: hay còn gọi là permanent cookie, stored cookie. Chúng có thời gian sống (expiry date) và được lưu trữ trên máy người dùng đến khi thời gian sống kết thúc hoặc bị xóa bởi người dùng.
Ưu điểm của Cookie
- Truy cập nhanh chóng (do lưu trữ trên máy client)
- Dễ dàng duy trì.
Nhược điểm của Cookie
- Độ bảo mật không cao (do lưu trữ dạng plain-text trên máy client)
- Người dùng có toàn quyền thao tác với file cookie.
Khi nào nên sử dụng Cookie
Dựa vào những ưu và nhược điểm của Cookie, bạn có thể thấy chúng ta chỉ nên sử dụng cookie để lưu những thông tin không yêu cầu bảo mật cao, và được sử dụng trong suốt phiên làm việc.
Cách tạo Cookie trong ASP.NET
Để tạo một Cookie trong ASP.NET, chúng ta thường sử dụng đối tượng HttpCookie và Response. Ví dụ:
HttpCookie userInfo = new HttpCookie("userInfo");
userInfo["Username"] = "CodeBlue";
userInfo.Expires.Add(new TimeSpan(0, 1, 0));
Response.Cookies.Add(userInfo);
Các lấy giá trị của Cookie trong ASP.NET
Để lấy và sử dụng giá trị được lưu trong Cookie, chúng ta sử dụng đối tượng Request. Ví dụ:
HttpCookie userInfo = Request.Cookies["userInfo"];
if (userInfo != null)
{
string userName = userInfo["UserName"].ToString();
}
Cách xóa Cookie trong ASP.NET
Mặc định, Cookie sẽ tự động được xóa sau khi hết thời gian sống (expiry date). Bạn có thể xóa ngay cookie bằng cách set thời gian expire của Cookie về trước ngày hiện tại. Ví dụ:
myCookie.Expires = DateTime.Now.AddDays(-1d);

Session

Session là gì?
Một session được hiểu như một phiên làm việc giữa client và server, bắt đầu khi có request từ client, kết thúc khi người dùng đóng ứng dụng hoặc khi session hết thời gian timeout. Cũng giống như Cookie, Session được dùng để lưu trữ thông tin liên quan đến người dùng, nhưng thay vì được lưu trên máy client, các biến session được lưu trên máy server. Mỗi session có một định danh duy nhất (SessionID).
Cách sử dụng Session trong ASP.NET
Cách tạo và sử dụng session trong ASP.NET rất đơn giản. Ví dụ:
Session ["UserID"] = "101";
if(Session["UserID"] ==null)
{
Response.Write("Page has expired.”);
}
Cách xóa Session trong ASP.NET
Thông thường, đối tượng session sẽ tự hủy sau khi hết thời gian timeout. Thời gian này mặc định là 20 phút nếu không được chỉ ra. Bạn cũng có thể hủy session bằng cách gọi đến phương thức Session.Abandon().
Ưu điểm của Session so với Cookie
- Session có thể lưu được những đối tượng phức tạp hơn.
- Session có độ bảo mật cao hơn (do được lưu trên server).
Cơ chế hủy Session của server
Chúng ta vẫn thường thấy rằng, khi bạn đóng trình duyệt rồi vào lại một trang web, bạn sẽ phải đăng nhập lại nếu bạn không dùng chức năng ghi nhớ trước đó. Như vậy bạn đang làm việc trong một session mới. Phải chăng session cũ đã bị hủy ngay sau khi bạn đóng trình duyệt?
Không phải vậy. Bạn nên nhớ một khái niệm cơ bản của giao thức HTTP rằng nó làm việc theo nguyên tắc request/response, nghĩa là client chỉ kết nối đến server khi có request từ phía client mà thôi. Nếu không có request, server hoàn toàn mù tịt về phía client. Điều đó cho thấy, server hoàn toàn không biết người dụng đóng trình duyệt lúc nào để mà hủy session đi.
Như bạn biết, mỗi session được định danh duy nhất bởi SessionID. Và SessionID này thực tế được lưu trên máy client trong Session Cookie. Khi bạn đóng trình duyệt, Session Cookie này được hủy ngay lập tức. Lúc này, các biến session vẫn còn tồn tại trên server. Khi mở lại trình duyệt vào lại trang web cũ, Session Cookie mới được tạo ra, một SessionID mới được ghi vào Session Cookie mới (do trong Session Cookie mới không có SessionID của session cũ), một phiên làm việc mới (session) bắt đầu. Các biến session cũ của phiên làm việc trước đó sẽ được giải phóng (hủy) khi hết thời gian timeout.

Samples

https://github.com/manhnguyenv/SSO

http://arunendapally.com/post/implementation-of-single-sign-on-(sso)-in-asp.net-mvc

GraphQL order management example

https://github.com/manhnguyenv/example-orders

Categories

Recent posts