1、DEV375基于身份和访问平台的应用开发,蔺华ISV开发合作经理平台及开发技术部微软(中国)有限公司,什么是身份?,数字身份: 某一个人、组、设备或者服务的唯一标识和说明性属性。AD中用户或者电脑的帐号 数据库表中的用户入口应用中用户登录凭证需要认证和授权的应用都是基于身份的,IntegrationServices(MIIS),DirectoryServices(AD, ADAM),AccessServices(ADFS),微软身份和访问平台Smart client SSO, web SSO, 基于请求的访问控制, 联合认证自服务和委托管理元数据发布,身份和访问管理 策略管理, 适用性评估,
2、报表, 执行等 生命周期管理 与其他的系统的连接性,WebClients,SmartClients,WebServers,ServerServices,Microsoft和Non-Microsoft,微软身份和访问平台,我们今天要解决什么问题?,对于那些把AD作为基础目录服务的机构对于那些要跟踪自己的资产的机构或者,有相应需求的部门等充分利用已有的架构也可以开发其他的一些解决方案: 自服务应用来管理自己的资产 针对管理员的全服务管理功能,认证,Sync,推荐的解决方案,资产跟踪管理系统,我们将学习到:User experience with the applicationsHow variou
3、s app requirements are met by this solutionVisualize the end result you can now move towards this solution,应用开发的需求,访问管理认证(Authentication)授权(Authorization)存储下面的信息:用户凭证和其他信息数据应用程序数据和配置数据,我们认证的需求,认证:确认某人是不是他说的那个人的方法应用程序的需求:增加帐户但是不增加麻烦允许非常灵活和可扩展的增加新的用户,认证的一些选项,单点登陆基本/摘要HTTP基本的发送明文的密码基于表单 在应用表单中输入用户和密码Co
4、okieLDAP (Light Directory Access Protocol 轻量级目录访问协议),强有力的认证支持单点登陆(SSO):当客户端连接到域时候,操作系统内建的功能就支持SSO非微软客户端也可以通过合作伙伴的产品来实现SSO在域中使用很好的扩展了集成认证/授权的功能能通过ADFS来实现跨机构的联合认证富客户端和Web应用都能够充分利用集成认证IIS 集成整合 非常简单,集成认证,强烈推荐!,怎么用在我们的解决方案中?,Windows集成认证Web 应用: 不需要任何代码富客户端:满足需求充分利用AD来做认证单点登陆(SSO)可扩展性: 很容易添加新的用户,API: Accep
5、tSecurityContext(),Server,Authentication,认证的解决方案,Sync,应用开发的需求,访问管理认证(Authentication) 授权(Authorization)存储下面的信息:用户凭证和其他信息数据应用程序数据和配置数据,我们授权的需求,授权: 基于身份来允许或者拒绝执行某个任务应用程序的需求:不用代码在应用中授权管理需要能够进行许可/拒绝访问操作不同的应用需要使用相同模式(scheme),授权的选项,授权管理器 (AzMan)ADFSWindows ACL(访问控制列表)模式最方便的授权访问模式LDAP 授权授权信息以数据的形式存储应用服务器都以合
6、适的方式访问这些信息COM+ 和 ASP.NET 角色,Mary(Admin),Bob(User),基于角色的授权 API管理角色而不是ACL对象简化报表和审计过程基于查询的组能很好的捕捉业务动态应用程序用在AzMan里定义好的角色来进行授权在设计时建立角色策略,InfrastructureDirectory,authorization,Server,Authentication,授权管理器,强烈推荐!,授权管理器 API,内嵌于Windows Server 2003, Windows 2000 可以下载安装该组件在AD/ADAM中针对角色和策略的可伸缩的, 应用程序特定的存储,- at ap
7、plication boot -AzPol.Initialize 0,“msldap:/Server:port/CN=MyStore,DC=App = AzStore.OpenApplication(“AssetTracker)- at client Connect -Context = App.InitializeClientContextFromName- on request -Context.AccessCheck(“ViewRpt,Scope,Operations,Names,Values)Context.GetRoles (),怎么用在我们的解决方案中?,满足需求一致的角色映射,
8、跨应用重用管理员在AzMan中完成角色指配,而不是在代码中完成,授权管理器极易使用的 API:,授权的解决方案,Authentication,ADAM,AuthZ,Sync,访问管理,我们将学习到:Integrated authenticationAuthorization : AzMan roles, tasksNew user has no access, admin adds to group, automated access; disabled user, access automatically denied,应用开发的需求,访问管理认证(Authentication) 授权(Au
9、thorization) 存储下面的信息:用户凭证和其他信息数据应用程序数据和配置数据,数据存储: 用户凭证和其他信息数据应用程序数据和配置数据应用程序的需求充分利用已有的基础架构和数据可伸缩,稳定的存储无缝的安装和配置 易于管理,数据存储的需求,数据存储的选项,数据库目录关键因素编程和数据模型开发的经验管理成本及其经验易于部署参看更多信息: http:/ (Kerberos, SSL, Digest)在添加另外的身份存储时不会带来身份危机,强烈推荐!,Infrastructure Active Directory,Client,Server,App partition,LDAP,AD 针对整
10、个组织范围的应用程序数据 针对对安全性要求很高的应用ADAM 针对应用程序数据 相当独立应用特定的用户数据或者配置信息利用Windows身份机制,Sync,应用程序数据的存储,目录访问 API,托管代码:System.DirectoryServices : 简单易用的高度抽象的对象模型System.DirectoryServices.Protocols : 针对高性能的目录应用提供了全面的LDAP访问能通过 ADO.NET进行有限的访问本地代码Active Directory Service Interfaces (ADSI) LDAP Win32 API(C and C+),托管代码实例,-
11、 UsersContainer entryreturn new DirectoryEntry(string.Format(CN=Users,0, partitionName), null, null, AuthenticationTypes.Secure | AuthenticationTypes.Sealing | AuthenticationTypes.Signing);- SaveAsset (SortedList attributes, string className) string cn = (AttributeInfo)attributescn).Value;/ Add a ne
12、w but empty child entry to the Asset container DirectoryEntry newEntry = AssetContainer.Children.Add(string.Format(CN=0, cn), string.Format(01,schemaPrefix, className);/ Commit the changesnewEntry.CommitChanges();- Search in the directoryDirectorySearcher search = new DirectorySearcher(topEntry); se
13、arch.Filter = string.Format(0), entryCriteria);return search.FindAll();,数据存储的解决方案,Authentication,ADAM,Store/Retrieve Data,Sync,身份和数据存储,我们将学习到:User in AD and app data in ADAMSchema and data in the store and how schemadriven app is extensibleCode to access directory data simpleand easy to develop apps rapidly,