Chuyển đến nội dung chính

Identity Server 4: Sử dụng sigining certificate (Part 4)

Trong bài viết này, mình sẽ hướng dẫn các bạn sử dụng Signing Certificate cho Identity Server.
Lưu ý:
Trong series bài viết về Identity Server 4, mình sử dụng .NET Core 1.1, Identity Server 4 version 1.5.2. Hiện tại Identity Server chưa có version chính thức cho .NET Core 2.0, nên mình chưa tìm hiểu về nó.

Signing Certificate là gì?

Chứng chỉ đăng ký là một chứng chỉ chuyên dụng được sử dụng để ký mã (sign token), cho phép các ứng dụng client xác minh rằng nội dung của token không bị thay đổi khi chuyển tiếp.
Khi bạn chưa có certificate, bạn sẽ có 2 cách khai báo

Sử dụng Certificate do Identity Server 4 tự phát sinh

Temporary Signing Credential


services.AddIdentityServer()
  .AddInMemoryClients(new List<Client>())
  .AddInMemoryIdentityResources(new List<IdentityResource>())
  .AddInMemoryApiResources(new List<ApiResource>())
  .AddTestUsers(new List<TestUser>())
  .AddTemporarySigningCredential();
 // Add framework services.
 //…

Nhược điểm của cách làm này, là mỗi lần restart application thì bạn phải yêu cầu lại token do key bị thay đổi.
Ngoài ra IdentityServer 4 bản 2.0 đã loại bỏ hàm AddTemporarySigningCredential().

Developer Signing Credential

Cùng mục đích như hàm AddTemporarySigningCredential, nhưng key sẽ được tạo và thêm vào trong project.

services.AddIdentityServer()
 .AddDeveloperSigningCredential()
 .AddInMemoryIdentityResources(Resources.GetIdentityResources())
 .AddInMemoryApiResources(Resources.GetApiResources())
 .AddInMemoryClients(Clients.Get())
 .AddTestUsers(Users.Get());

Lưu ý
Bạn chỉ sử dụng hàm này khi host Identity Server trên 1 máy. Trong môi trường product farm, bạn cần sử dụng Signing Certificate.

Sử dụng Certificate từ file pfx

Để tạo Certificate, bạn tham khảo bài viết: Hướng dẫn tạo Self-Certificate trong IIS.
Bạn cần lưu ý là certificate này không cần chứng thực bởi 1 đơn vị cấp phát CA như Verisign, có nghĩa là bạn không cần bỏ tiền ra mua SSL Certificate.
Trong ví dụ này, mình sử dụng Certificate idsrv3test. Bạn có thể download file Certificate này từ: http://www.mediafire.com/file/wvbtsk97w6gyl4c
var certificate = new X509Certificate2(Path.Combine(_env.ContentRootPath, "idsrv3test.pfx"), "idsrv3test");
//add Identity Server
services.AddIdentityServer()
 //.AddTemporarySigningCredential()
 .AddSigningCredential(certificate)
 .AddInMemoryIdentityResources(Resources.GetIdentityResources())
 .AddInMemoryApiResources(Resources.GetApiResources())
 .AddInMemoryClients(Clients.Get())
 .AddTestUsers(Users.Get());

Trường hợp Signing Certificate từ CertStore

Khi cài đặt certifcate, bạn cần lưu ý: chọn Local Machine


Trong file Startup.cs, bạn cập nhật đoạn code:
            services.AddIdentityServer()
                //.AddTemporarySigningCredential()
                .AddSigningCredential("CN=CertName")
                .AddInMemoryIdentityResources(Resources.GetIdentityResources())
                .AddInMemoryApiResources(Resources.GetApiResources())
                .AddInMemoryClients(Clients.Get())
                .AddTestUsers(Users.Get());
CertName: tương ứng với Subject trong Certificate Store.

Bạn có thể mở Certificate Store bằng cách:
  • Windows + R
  • Gõ certmgr.msc. Enter

Sử dụng Certificate với Azure App Service

Nếu bạn deploy ứng dụng lên Windows Azure, bạn cần làm theo những bước sau để sử dụng file certificate:
  • Trong Windows Azure portal, bạn mở App Services mà bạn muốn sử dụng certificate.
  • Bấm vào link SSL certificates.
  • Bấm vào nút Upload Certificate.
  • Chọn file *.pfx, nhập password nếu có.
Chọn file *.pfx

Nhập password (nếu có) cho file idsrvetest.pfx
Sau khi upload PFX certificate file, bạn sẽ có 1 dãy số Thumbprint: ABCDEF...
Để sử dụng file certificate, bạn cần thêm giá trị vào AppSettings
Name = WEBSITE_LOAD_CERTIFICATES,
Value = *
Thiết lập như vậy là xong. Bạn deploy và test thử trên Azure nhé.
Download Sample: http://www.mediafire.com/file/crev9pf0zz8vaph/
Chúc các bạn thành công.
Nhatkyhoctap's blog

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.