[]
欢迎使用活字格安全提供程序文档,本节将为您介绍活字格中的安全提供程序的80%以上的基础概念,为您的使用提供帮助。
通过本节内容,您可以了解到:
什么是活字格安全提供程序;
如何快速创建一个自定义的活字格安全提供程序。
当您希望将第三方系统的用户信息集成到活字格中使用时,就需要使用安全提供程序。它是一个插件化的连接器,活字格可以通过它获取同步第三方系统中的用户信息。
活字格官方默认提供了如下的安全提供程序:
当官方提供的安全提供程序无法满足您的需求时,您就可以自定义安全提供程序。
安全提供程序的本质就是一个C#的接口 ISecurityProvider,您可以实现其接口中的方法来满足各种第三方用户数据到活字格的集成。
这里给您展示的是一个安全提供程序的最小默认实现示例代码:
public class SimpleSecurityProvider : ISecurityProvider
{
/// <summary>
/// 安全提供程序名称,主要用于在服务器中展示
/// </summary>
public string Name { get; } = "一个测试安全提供程序的名称";
/// <summary>
/// 第三方系统中的所有用户信息,如果不需要提供用户信息,则返回 null
/// </summary>
public UserInformations UserInformations { get; }
/// <summary>
/// 用户认证的类型,目前默认为 UserNameAndPassword 即账号密码认证
/// 此例中也以这种方式进行认证
/// </summary>
public AuthenticationType AuthenticationType { get; }
/// <summary>
/// 第三方应用获取的数据如何在活字格中保存,目前默认为 InForguncyDatabase 即保存在活字格数据库中
/// 此例中也以这种方式进行保存
/// </summary>
public UserInformationStorageMode UserInformationStorageMode { get; }
/// <summary>
/// 是否支持登出操作,如果支持,则在活字格中可以执行登出操作
/// </summary>
public bool AllowLogout { get; }
/// <summary>
/// 认证用户,在登录活字格时会调用此方法
/// </summary>
/// <param name="properties">所需用户相关信息的参数字典,此例中,用户名以及密码会从此参数中获取</param>
/// <returns>认证成功则返回用户信息,否则可以返回 null 表示用户认证失败</returns>
public User VerifyUser(Dictionary<string, string> properties)
{
// 验证密码示例,实际上需要根据不同用户验证不同密码
if (!properties.TryGetValue("password", out var password) || password != "123456")
{
// 没有密码或验证失败
return null;
}
// 实现用户认证逻辑(仅用于演示,实际应根据传入的属性进行认证)
if (properties.TryGetValue("userName", out var userName)
&& userDatabase.TryGetValue(userName, out var user))
{
return user; // 认证成功,返回用户
}
return null; // 认证失败,返回空
}
}
从上述代码中我们可以得到如下信息:
安全提供程序可以给活字格服务器返回第三方系统中的所有用户信息;
通过安全提供程序,您可以使用第三方系统的用户认证逻辑来替换活字格的用户认证逻辑;
安全系统程序可以将第三方用户信息存储到活字格数据库中,从而达到更好的集成。
当您实现了如上述的安全提供程序后,就可以加入活字格的服务器用以连接第三方系统了。
下一节
此章节仅是为您展示最简单的安全提供程序是如何工作的,在随后的章节中,我们会为您一步一步的介绍如何从零开始开发一个安全提供程序。
下一节,您将了解如何初始化安全提供程序的程序集,并最终打包为一个可供活字格服务器安装的合法安全提供程序。