[]
        
(Showing Draft Content)

第四十一章 单点登录

单点登录可使用户从其他应用程序或网站中跳转到活字格的页面时,自动以原应用的用户名登录活字格的网站。

单点登录的原理图如下图所示。


GetUserToken 接口说明

请求方式

Post

参数

参数

说明

userName

需要登录的用户名。

password

单点登录密码。

返回值

字符串。如果获取Token成功,返回的字符串不以 “Error:”开头;如果获取Token失败,返回的字符串为错误信息并以“Error:”开头,方便调试定位。

type=note

说明:

用户名必须在活字格的用户管理系统中存在。

设置单点登录

在活字格的设计器,选择“文件->设置->与另外的网站集成”,可查看与设置单点登录的密码。设置说明见下表。


设置

说明

允许单点登录

是否开启单点登录,默认不开启,值为False。

单点登录密码

获取用户Token时所需的密码。打开设计器时会随机生成一个密码。允许单点登录后,如果不保存文件,下次再打开时密码会重新生成;如果保存了文件,再打开时密码则不会改变。

Token超时时间

Token的有效时间。

设置单点登录后,在第三方(非活字格)的应用程序写下如下代码:

var baseUrl = "http://localhost:25979/Forguncy";
var userName = "administrator"; 
var password = "7FBqkHeV!4Rw";  // 这个密码是单点登录密码
HttpWebRequest rq = HttpWebRequest.Create(baseUrl + "/SSO/GetUserToken") as HttpWebRequest;
rq.Method = WebRequestMethods.Http.Post;
rq.Accept = "application/json";
rq.ContentType = "application/json";
var loginStr = "{userName:\"" + userName + "\", password:\"" + password + "\"}";
var data = Encoding.UTF8.GetBytes(loginStr);
using (Stream stream = rq.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}
var response = rq.GetResponse();
var token = new StreamReader(response.GetResponseStream()).ReadToEnd();
if(token.StartsWith("Error:"))
{
    MessageBox.Show(token);
    return;
}
Process.Start(baseUrl + "?token=" + token);

type=note

说明:

  • 此功能仅适用于Form用户,Windows域用户无法使用该功能。

  • 需要登录的用户名必须在活字格应用中已经存在。

  • 为了确保安全,单点登录的密码不要在JavaScript代码中出现,以防泄露。

直接修改发布后的密码

在服务器上的“C:\Users\Public\Documents\ForguncyServer\应用名”目录下找到“Config.xml”配置文件,打开并编辑Password的值,如下图所示。


type=note

说明:

  • 如果Password节点中没有值,则表示密码为打开设计器时随机生成的密码。

  • 修改后需要重启网站。