Top Banner
(ASP).NET Membership Built in security Daniel Fisher [email protected]
33

2009 - NRW Conf: (ASP).NET Membership

Aug 13, 2015

Download

Software

Daniel Fisher
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2009 - NRW Conf: (ASP).NET Membership

(ASP).NET MembershipBuilt in securityDaniel [email protected]

Page 2: 2009 - NRW Conf: (ASP).NET Membership
Page 3: 2009 - NRW Conf: (ASP).NET Membership
Page 4: 2009 - NRW Conf: (ASP).NET Membership

ASP.NET Membership In the .NET Framework since the

beginning Part of ASP.NET• But who cares

Page 5: 2009 - NRW Conf: (ASP).NET Membership

Membership

Membership.ValidateUser(userName, password);

Var user = Membership.GetUser(1);user.Email = "[email protected]";

Membership.UpdateUser(user);

Page 6: 2009 - NRW Conf: (ASP).NET Membership

Roles

const string adminRole = "Administrator";

if(!Roles.Role.Exists(adminRole)){

Role.CreateRole(adminRole);}

IPrinciple user = HttpContext.Current.User;User.IsInRole(adminRole);

Page 7: 2009 - NRW Conf: (ASP).NET Membership

Based on IPrincipal An essential part of the .NET

Framework• System.Threading• System.Environment• ...

Page 8: 2009 - NRW Conf: (ASP).NET Membership

What about my data?

Page 9: 2009 - NRW Conf: (ASP).NET Membership

Ist not always a green field Membership API is provider based

Membership API

Configuration

Membership ProviderMembership ProviderMembership ProviderMembership ProviderMembership Provider

Page 10: 2009 - NRW Conf: (ASP).NET Membership

Membership Configuraton<configuration> <system.Web> <membership defaultProvider="SqlProvider"> <providers> <add

name="SqlProvider" ... />

<providers> </membership> </system.Web></configuration>

Page 11: 2009 - NRW Conf: (ASP).NET Membership

Membership ProviderMethods

protected MembershipProvider();public abstract bool ChangePassword();public abstract bool ChangePasswordQuestionAndAnswer();public abstract MembershipUser CreateUser();protected virtual byte[] DecryptPassword();public abstract bool DeleteUser();internal string EncodePassword();protected virtual byte[] EncryptPassword();public abstract MembershipUserCollection FindUsersByEmail();public abstract MembershipUserCollection FindUsersByName();internal string GenerateSalt();public abstract MembershipUserCollection GetAllUsers();public abstract int GetNumberOfUsersOnline();public abstract string GetPassword(string username, string answer);public abstract MembershipUser GetUser();public abstract MembershipUser GetUser();internal MembershipUser GetUser();public abstract string GetUserNameByEmail();protected virtual void OnValidatingPassword();public abstract string ResetPassword();internal string UnEncodePassword();public abstract bool UnlockUser();public abstract void UpdateUser();public abstract bool ValidateUser();

Page 12: 2009 - NRW Conf: (ASP).NET Membership

Membership ProviderProperties

public abstract string ApplicationName { get; set; }public abstract bool EnablePasswordReset { get; }public abstract bool EnablePasswordRetrieval { get; }public abstract int MaxInvalidPasswordAttempts { get; }public abstract int MinRequiredNonAlphanumericCharacters { get; }public abstract int MinRequiredPasswordLength { get; }public abstract int PasswordAttemptWindow { get; }public abstract MembershipPasswordFormat PasswordFormat { get; }public abstract string PasswordStrengthRegularExpression { get; }public abstract bool RequiresQuestionAndAnswer { get; }public abstract bool RequiresUniqueEmail { get; }

Page 13: 2009 - NRW Conf: (ASP).NET Membership

Custom Membership Providers

demo!

Page 14: 2009 - NRW Conf: (ASP).NET Membership

Beyond the web...

Page 15: 2009 - NRW Conf: (ASP).NET Membership

What about the rest? There are not only ASP.NET Web

Applications• AJAX• Desktop• Web Services• Rich Internet Applications

Page 16: 2009 - NRW Conf: (ASP).NET Membership

Sys.Web.Services ASP.NET AJAX supports Membership

authentication out of the box. Just enable it in the config

Page 17: 2009 - NRW Conf: (ASP).NET Membership

Sys.Services Configuraton<configuration> <system.web.extensions> <scripting> <webServices> <authenticationService enabled="true" /> </webServices> </scripting> </system.web.extensions> </configuration>

Page 18: 2009 - NRW Conf: (ASP).NET Membership

Membership for AJAX Apps

demo!

Page 19: 2009 - NRW Conf: (ASP).NET Membership

Membership Services Visual Studio 2008 offers desktop

applications to enable Membership features with "one click".

Page 20: 2009 - NRW Conf: (ASP).NET Membership

Membership for Desktop Apps

demo!

Page 21: 2009 - NRW Conf: (ASP).NET Membership

Limitations Microsoft ships a provider for• ASP.NET Database schema• Windows Accounts• Active directory

The API offers full administration of your authorization store• BUT...• The providers running against SAM/AD do not

support a few things...• Like editing other user accounts

Page 22: 2009 - NRW Conf: (ASP).NET Membership

WCFSecurity Windows Communications Foundation

is one of the most pluggable and configurable thing the world has seen.

Of course this is also true for its security features.

Page 23: 2009 - NRW Conf: (ASP).NET Membership

WCF Authentication Derive from the base class UserNamePasswordValidator.Override the method Validate.

Configure the class in the service behavior section as service credentials to use.

Page 24: 2009 - NRW Conf: (ASP).NET Membership

Authentication Configuraton<configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="MyBahavior"> <serviceCredentials> <userNameAuthentication

customUserNamePasswordValidatorType="..."

userNamePasswordValidationMode="Custom" />

</serviceCredentials> </behavior>

</serviceBehaviors> </system.serviceModel> </configuration>

Page 25: 2009 - NRW Conf: (ASP).NET Membership

WCF Authorization Implement the interface

IAuthorizationPolicy. Configure the extension in the service

behavior section as service authorization to use.

Page 26: 2009 - NRW Conf: (ASP).NET Membership

Authorization Configuraton<configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="MyBahavior"> <serviceAuthorization

principalPermissionMode="Custom"> <authorizationPolicies> <add policyType="..."/> </authorizationPolicies> </serviceAuthorization>

</behavior> </serviceBehaviors>

</system.serviceModel> </configuration>

Page 27: 2009 - NRW Conf: (ASP).NET Membership

Membership for Web Services

demo!

Page 28: 2009 - NRW Conf: (ASP).NET Membership

Rich Internet Applications There is no Membership in Silverlight • But we can use the AJAX API...

So the limiting factor is the network connectivity...

Page 29: 2009 - NRW Conf: (ASP).NET Membership

Membership for Rich Internet Applications

demo!

Page 30: 2009 - NRW Conf: (ASP).NET Membership

Q&A

Page 31: 2009 - NRW Conf: (ASP).NET Membership

Thank you!

Page 32: 2009 - NRW Conf: (ASP).NET Membership

devcoach® SOFTWARE://DEVELOPMENT+ARCHITECTURE+CONSULTING

Page 33: 2009 - NRW Conf: (ASP).NET Membership