보안 공급자를 구현하는 방법

Microsoft는 ISecurityProvider 인터페이스를 제공합니다. 이 인터페이스를 구현함으로써 사용자는 다른 시스템과 통합할 수 있습니다.

이 섹션에서는 보안 공급자를 구현하는 방법에 대해 설명합니다.

보안 공급자 구현

  • 이동형 그리드 서버 설치 시 설치 디렉토리가 기본 디렉토리라면 이 파일의 경로는 다음과 같습니다.

    • Windows 시스템은 32비트 운영 체제입니다: C:\Program Files\ForgancyServer\Website\bin

    • Windows 시스템은 64비트 운영 체제입니다: C:\Program Files (x86)\ForgancyServer\Website\bin

  • 포건시 시 설치 디렉토리가 커스텀 경로라면 이 파일의 경로는 "커스텀 경로\ForgancyServer\Website\bin" 입니다.

using GrapeCity.Forguncy.SecurityProvider;
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace DemoPasswordSecurityProvider
{
    public class DemoPasswordSecurityProvider : ISecurityProvider
    {
        List<User> testUsers = new List<User>();
        public DemoPasswordSecurityProvider()
        {
            AddUser("User1", "TestUser1", "User1@User1.com", "User1Property");
            AddUser("User2", "TestUser2", "User2@User2.com", "User2Property");
            AddUser("User3", "TestUser3", "User3@User3.com", "User3Property");
        }
 
        void AddUser(string userId, string userName, string email, string customProperty)
        {
            testUsers.Add(new User()
            {
                UserId = userId,
                Email = email,
                FullName = userName
            });
 
            testUsers.Last().Properties.Add("customProperty", customProperty);
        }
 
        public string Name
        {
            get
            {
                return "DemoPasswordSecurityProvider";
            }
        }
 
        public AuthenticationType AuthenticationType
        {
            get
            {
                return AuthenticationType.UserNameAndPassword;
            }
        }
 
        public UserInformationStorageMode UserInformationStorageMode
        {
            get
            {
                return UserInformationStorageMode.InForguncyDatabase;
            }
        }
 
        public UserInformations UserInformations => throw new NotImplementedException();
 
        public bool AllowLogout
        {
            get
            {
                return true;
            }
        }
 
        private User GetUserInformation(string userId)
        {
            return testUsers.FirstOrDefault(u => u.UserId == userId);
        }
 
        public User VerifyUser(Dictionary<string, string> properties)
        {
            var userName = properties["userName"];
            var password = properties["password"];
 
            var user = GetUserInformation(userName);
 
            if (user != null && password == "123456")
            {
                user.Properties.Add("FGC_Role", "MyRole");
                return user;
            }
 
            return null;
        }
    }
}

그 중 InForguncyDatabase 는 사용자 정보를 Movable Type에 저장하는 방식이고 다른 방식은 InMemoryCache 입니다.

  • InForguncyDatabase 이 모드에서는 사용자가 처음으로 웹사이트에 로그인할 때 사용자 정보를 사용자 서비스 데이터베이스에 추가합니다. 관리자는 사용자에게 역할과 조직을 할당해야 합니다. 사용자가 이미 그리드 에 추가 되었거나 사용자가 삭제되었거나 원래 애플리케이션에서 사용자 속성이 변경된 경우 그리드 는 자동으로 동기화되지 않습니다.

  • InMemoryCache 이 모드에서 Movable Type 사이트는 시작 시 사용자 이름, 사용자 특성, 역할 및 조직을 포함하여 모든 사용자 정보를 가져옵니다. 그런 다음 사용자 정보는 사이트의 메모리에 캐시됩니다. 이 정보를 사용하여 권한 및 작업 흐름 등을 설정합니다.

Last updated