Configure authentication

  • Authenticating users

    • IIS authentication

      • Anonymous
      • ASP.net impersonation
      • Basic

        transmit username/password between client/server in Base64 encoded but not encrypted.
      • Digest

        username/password are encrypted
      • Forms

        1: without using built-in windows security system

        2: use FormsAuthentication.SetAuthCookie to make authentication token available for the rest of the session.
      • Windows

        supported only in microsoft browser

        use NTLM/Kerberos

        straightforward and easy to implement, especially on intranet.
      • ASP.net impersonation authentication

        independent of authentication mode configured in Web.config file
    • System.Security.Principal.IPrincipal / System.Security.Principal.IIdentity

    • WindowsIdentity/WindowsPrincipal
    • FormsIdentity/GenericPrincipal
    • GenericIdentity/GenericPrinciapl

    use AuthorizeAttribute to enforce authentication

    • Form authentication + SimpleMembership + WebSecurity

      Windows authentication

      • use Active directory to manage users
      • all users are members of your domain
      • require users to use IE or Microsoft browser

        Form authentication
      • use standard ASP.net membership provider db schema or your own

        Custom authentication
      • create a custom provider by implementing IIdentity or IPrincipal to interact with underlying authentication mechanism
  • Manage user session by cookies

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
1,
userName,
DateTime.Now,
DateTime.Now.AddDays(90),
createPersistentCookie, // a Boolean indicating whether a cookie
// should be created on the user's machine
String.Join(";",rolesArr) //user's roles
);
// add cookie to response stream
string encTicket = FormsAuthentication.Encrypt(authTicket);
System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.
FormsCookieName, encTicket);
System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);
  • Configuring membership providers

    • use SimpleMembershipProvider/WebSecurity helper classes
  • Creating custom membership providers

    • ActiveDirectoryProvider for app use windows authentication
    • SqlMembershipProvider for form authentication

Configure and apply authorization

  • create roles
  • configure roles

    configure a SQL membership role provider in Web.config file

    use InitializeDatabaseConnection(...) for SimpleMembershipProvider with SimpleRole.
  • Authorizing roles programmatically
    • applying Authorize attribute
    • check in code via followings

      *RoleProvider.GetRolesForUser, RoleProvider.IsUserInRole, HttpContext.User.IsInRole

      *WebSecurity.RequireRoles(...)
  • creating custom role providers
  • Implementing WCF service authorization

Design and implement claims-based authentication across federated identity stores

  • Implementing federated authentication by using Windows Azure Access Control Service (ACS)

    ACS features includes:

    • integrates with Windows Identity Foundation (WIF)
    • support well-known identity providers such as Facebook, Microsoft account, Yahoo and Google
    • support Active Directory Federation Services (ADFS) 2.0
    • support OAuth 2.0, WS-Trust and WS-Federation protocols
    • support various token formats, include JSON Web Token (JWT), Security Assertion Markup Language (SAML) and Simple Web Token (SWT)
    • provides a web-based management portal

  • Creating a custom security token by using WIF
  • Handling token formats for SAML and SWT tokens

Manage data integrity

  • encryption terminology

    • Encryption: DES, AES
    • Hashing: MD5, SHA
    • Salting
  • Applying encryption to application data

    • Symmetric: AES, DES, RC2, Rijindael, TripleDES
    • Asymmetric: DSA, ECDiffieHellman, ECDsa, RSA
using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
{
// assumes that the key and initialization vectors are already configured
CryptoStream crypoStream = new CryptoStream(myManagedStream, rijndaelManaged.
CreateEncryptor(),CryptoStreamMode.Write);
}; using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
{
// assumes that the key and initialization vectors are already configured
CryptoStream crypoStream = new CryptoStream(myManagedStream, rijndaelManaged.
CreateDecryptor(),CryptoStreamMode.Read);
};
  • Applying encryption to the configuraion sections of an application

    • DPAPIProtectedConfigurationProvider
    • RsaProtectedConfigurationProvider: allow export/import of the keys used for encryption/decryption
    • use aspnet_regiis to encrypt/decrypt sections of the Web.confg file.
  • Signing application data to prevent tampering

// create the hash code of the text to sign
SHA1 sha = SHA1.Create();
byte[] hashcode = sha.ComputeHash(TextToConvert);
// use the CreateSignature method to sign the data
DSA dsa = DSA.Create();
byte[] signature = dsa.CreateSignature(hashcode); // create the hash code of the text to verify
SHA1 sha = SHA1.Create();
byte[] hashcode = sha.ComputeHash(TextToVerify);
// use the VerifySignature method to verify the DSA signature
DSA dsa = DSA.Create();
bool isSignatureValid = dsa.VerifySignature(hashcode, signature);

Implement a secure site with ASP.NET

  • Securing communication by applying SSL/TLS certificates

    setup site with certificate and https

  • Salt and hash passwords for storage

  • Using HTML encoding to prevent cross-site scripting attacks (AntiXSS Library)

    • use @Html.Encode()
    • encode the data before saving to db
    • use AntiXSS library from NuGet
  • Implementing deferred validation and handle unvalidated requests

  • Preventing SQL injection attacks by parameterizing queries

  • Preventing cross-site request forgeries (XSRFs)

[RequireSession]
[AcceptVerbs(HttpVerbs.Post)]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(string username, string password, string remember, string deviceToken, string apid)
{
}
@using (Html.BeginForm("Login", "Authorize"))
{
@Html.AntiForgeryToken();
}

internally cookie is used for XSRF validation.

Chapter 5: Design and implement security的更多相关文章

  1. Chapter 2: Design the user experience

    Apply the user interface design for a web application 介绍了Css的常用属性和html5的新element,以及Htmlhelper的简单方法,如 ...

  2. Chapter 1: Design the application architecture

    1.1 Plan the application layers 提到了repository pattern,SoC(Separation of Concern), 进而提及MVC,Action/Act ...

  3. Chapter 7. Design and Performance

    本章将对MPEG4及H.264的实现细节进行讲解和比对. Motion Estimation 衡量运动估计的好坏有三种函数(第228页):MSE,MAE和SAE,其中由于SAE运算速度最快所以采用的最 ...

  4. MapReduce Design Patterns(chapter 1)(一)

    Chapter 1.Design Patterns and MapReduce MapReduce 是一种运行于成百上千台机器上的处理数据的框架,目前被google,Hadoop等多家公司或社区广泛使 ...

  5. (转)MapReduce Design Patterns(chapter 1)(一)

    翻译的是这本书: Chapter 1.Design Patterns and MapReduce MapReduce 是一种运行于成百上千台机器上的处理数据的框架,目前被google,Hadoop等多 ...

  6. Page Security

    参见开发文档 Overview This document describes how to build applications that grant selected access to indi ...

  7. Chapter 6 — Improving ASP.NET Performance

    https://msdn.microsoft.com/en-us/library/ff647787.aspx Retired Content This content is outdated and ...

  8. Quality in the Test Automation Review Process and Design Review Template

    About this document Prerequisite knowledge/experience: Software Testing, Test Automation Applicable ...

  9. Security Software Engineer

    Security Software Engineer Are you excited to be part of the VR revolution and work on cutting edge ...

随机推荐

  1. Android高效加载大图、多图解决方案,有效避免程序OOM

    高效加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是 ...

  2. if 判断中出现逗号

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. shopex 小知识

    产品链接: http://www.--/product-172.html 中间的数字代表  sdb_goods 表中 的 goods_id  ... 表示数据库里的产品 id. 分类链接: http: ...

  4. 搭建测试环境——针对S3C6410开发板

    (一)前言 目前市面上的开发板型号和种类很多,但目前最流行的是基于三星S3C6410 ARM11架构的开发板.国内很多厂商在S3C6410 ARM11架构的开发板的基础上进行了扩展,开发了扩展板,本博 ...

  5. jdk 编译器 对final字段的处理

    class FinalTest{     void a(){         final int i=10;         int j=10;     } }            stack=2, ...

  6. 全国大学列表文件(较新)+ nodejs导入mongodb数据库

    直接上代码 'use strict' var fs=require('fs'), mongodb=require('mongodb').MongoClient, assert=require('ass ...

  7. python 字符串内建函数

    方法 描述 string.capitalize() 把字符串的第一个字符大写 string.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 string ...

  8. PowerDesigner自增列问题

  9. 远程通知中app更新提示。

    // // AppDelegate.m // SDJK // // Created by Jobs on 6/13/16. // Copyright (c) 2016 com.FlintInfo.dE ...

  10. 关于IIS服务器证书续订

    输入办证机构+服务器名或IP 办证机构可以通过certsrv.msc来查看 输入完后点完成