在Azure AD之后验证asp.net用户

时间:2017-12-24 23:02:35

标签: c# asp.net azure azure-active-directory forms-authentication

我的应用程序只能由我的组织中的员工使用。这将受Azure Active Directory限制,因此只有域中的用户才能访问该站点。

之后我需要进一步增加安全性,以便只有某些员工才能访问该网站。我有一个(MS)SQL表,其中包含所有符合条件的用户名。

使用

直接从Azure Active Directory中提取用户名
string username = User.Identity.Name;

(已经过测试并返回正确的语法和字符串等)

我的第一个想法是使用表单身份验证,然后在" login.aspx" Page_Load,检查SQL表,如果存在则继续进入站点

FormsAuthentication.RedirectFromLoginPage(username, true)

如果没有,则加载带有表单的login.aspx页面以填写请求访问权。

问题是,这是最好的方法,而无需重写整个解决方案。

  • 我在网站内有多个aspx页面,所以不想添加"检查"每页。
  • 用户不需要输入密码。

编辑25/12/17感谢@juunas和@PeterBons - 这是我登录表单的Page_load事件中的内容,然后web.config处理表单身份验证。 任何人都可以看到任何MASSIVE错误或安全漏洞?

protected void Page_Load(object sender, EventArgs e)
{
    bool isAuthenticated = false;
    string username = User.Identity.Name.ToLower().Trim();

    string firstname = "";
    string surname = "";
    string jobrole = "";
    string userlevel = "";

    string constr = ConfigurationManager.ConnectionStrings["AzureSQL"].ConnectionString;
    SqlConnection cnn = new SqlConnection(constr);
    string query = "Select * from Usernames";
    string querywriteTime = "update [usernames] set [last log in] = @date where username = @username";
    SqlCommand cmd1 = new SqlCommand(querywriteTime, cnn);
    SqlCommand cmd2 = new SqlCommand(query, cnn);
    cnn.Open();
    SqlDataReader rdr = cmd2.ExecuteReader();
    while (rdr.Read())
    {
        if (rdr[0].ToString().ToLower().Trim() == username)
        {
            firstname = rdr[1].ToString().Trim();
            surname = rdr[2].ToString().Trim();
            jobrole = rdr[4].ToString().Trim();
            userlevel = rdr[5].ToString().Trim();
            isAuthenticated = true;
        }

    }
    cnn.Close();

    if (isAuthenticated)
    {
        string str = firstname + "/" + surname + "/" + jobrole+"/"+userlevel;
        cmd1.Parameters.AddWithValue("@date", DateTime.Now);
        cmd1.Parameters.AddWithValue("@username", username);
        cnn.Open();
        cmd1.ExecuteNonQuery();
        cnn.Close();
        FormsAuthentication.RedirectFromLoginPage(str, true);
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在Azure门户中将应用设置为 require user assignment

  1. 访问portal.azure.com
  2. 查找Azure Active Directory
  3. 转到企业应用程序
  4. 转到所有应用
  5. 找到你的应用
  6. 转到“属性”
  7. 勾选需要用户分配?
  8. 现在,您可以转到“用户和群组”标签,然后选择有权访问的人。