using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Configuration;
using System.Xml;
using System.IO;
/// <summary>
/// SSO系统
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class sso : System.Web.Services.WebService
{
public sso()
{
}
[WebMethod]
public String GetLoginByToken(String Token)
{
//根据Token读取对应的原业务系统的登录用户名与密码,并加密返回
String result = "noneLogin";
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add(new SqlParameter("@Token", Token));
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
//result = "LoginId=" + dr["AppLoginId"].ToString().Trim() + ";LoginPwd=" + dr["AppPassword"].ToString().Trim();
result = dr["AppLoginId"].ToString().Trim();
}
dr.Dispose();
cmd.Dispose();
}
return result;
}
[WebMethod]
public Boolean TokenLost(String Token)
{
Boolean result = false;
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
String sql = "DELETE FROM AppToken WHERE Token = @Token";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add(new SqlParameter("@Token", Token));
Int32 line = cmd.ExecuteNonQuery();
if (line == 1)
{
result = true;
}
cmd.Dispose();
}
return result;
}
[WebMethod]
public String SSOActive(String AppId, String ssoUserId, String LoginId)
{
Int32 result = m_CheckAppsUsers(AppId, LoginId);
if (result == -1)
{
return "Web Service执行错误,请联络技术支持.";
}
else if (result == 1)
{
return "该帐户已经是单点登录帐户,不用再次激活.";
}
Boolean active = m_InsertAppsUsers(AppId, Convert.ToInt32(ssoUserId), LoginId);
if (!active)
{
return "帐号激活失败,请联络技术支持.";
}
return "单点登录已激活";
}
result = true;
}
catch
{
try
{
trans.Rollback();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
throw;
}
finally
{
if (conn != null)
conn.Dispose();
if (trans != null)
trans.Dispose();
}
return result;
}
private DataTable m_GetSSOUsers()
{
DataTable dt = new DataTable();
SqlConnection conn = null;
try
{
conn = new SqlConnection(ConnectionString);
conn.Open();
String sql = "SELECT * FROM ssoUsers ORDER BY ssoUserName ASC FOR XML AUTO";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(dt);
da.Dispose();
}
catch
{
throw;
}
finally
{
if (conn != null)
conn.Close();
}
return dt;
}
public static string m_GetXmlStrFromDataTable(DataTable dt)
{
String Result = "";
foreach (DataRow row in dt.Rows)
{
Result += row[0].ToString();
}
Result = "<ssoUsers>" + Result + "</ssoUsers>";
return Result;
}