Windows azure 联合身份验证服务配置(SSO)


说到SSO,相信大家已经很熟悉了,SSO=单点登录,当然也有叫目录集成的说法。那在windows azure上实现SSO会有什么效果呢?如果我们的机构内部已经在使用本地的 Active Directory,则可将其与我们的 Azure AD 目录相集成,借此可自动执行基于云的管理任务,并可向用户提供更加简化的登录体验。 Azure AD 支持以下两种目录集成功能: l 目录同步 - 用于将本地目录对象(用户、组、联系人)与云同步,以帮助减小管理开 销。设置目录同步后,管理员可将本地 Active Directory 中的目录对象设置到云租户 中。 单一登录 (SSO) - 当用户登录到公司网络后访问微软云服务时,用于向用户提供更加 简化的身份验证体验。为了设置单一登录,还需要在本地部署安全令牌服务。设置单一 登录后,用户可以使用公司内部环境的 Active Directory 凭据(用户名和密码)访问 云及其现有本地资源中的服务。那具体怎么做呢,大概分为两步:1.通过dirsync工具将本地的Active Direcroy信息同步到windows azure Active Directory下。2.通过配置ADFS联合身份验证后,通过本地用户的域信息进行验证登录windows azure portal。具体见下:

环境介绍:

hostname:iio-dc.iiosoft.com

ip:10.1.1.254

role:DC、dns、CA

hostname:adfss.iiosoft.com

ip:10.1.1.50

role:ADFS

hostname: iio-tmg.iiosoft.com

ip:10.1.1.1

role:geteway

我们首先打开windows azure 的portal页面,里面有一个Active Directory服务,其实这个AD服务跟本地的AD功能上相差甚远,也可以说是不在同一个层次上,也许在不久的将来就跟本地的AD就差不多了,windows azure的AD服务主要提供portal页面上的sharepoint 服务的验证,其他的也就没什么效果了。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置

单击仪表盘我们可以看见一些配置。我们呢,首先添加本地域名

Windows azure 联合身份验证服务配置(SSO)_Windows azure_02

输入本地域名,通过勾选我们计划配置此域为使用本地ACTIVE DIRECTORY进行单点登录

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_03

添加完成。

Windows azure 联合身份验证服务配置(SSO)_Windows azure_04

添加完成后,跳转到目录集成页面

Windows azure 联合身份验证服务配置(SSO)_Windows azure_05

我们首先是单击已激活该服务同步。

Windows azure 联合身份验证服务配置(SSO)_Windows azure_06

选择已激活,保存

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_07

警告信息。

Windows azure 联合身份验证服务配置(SSO)_Windows azure_08

Windows azure 联合身份验证服务配置(SSO)_Windows azure_09

接下来我们可以根据提示进行配置目录集成了。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_10

https://bposast.vo.msecnd.net/dirsync/7020.0/dirsync.exe

下载安装程序:我们在本地安装一个新的操作系统。然后加域,同时下载程序。

Windows azure 联合身份验证服务配置(SSO)_Windows azure_11

我们知道windows 2012系统默认是安装了netframwork4.5的,所以我们需要安装netframwork3.5.1即可

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_12

安装完成

Windows azure 联合身份验证服务配置(SSO)_Windows azure_13

再次安装同步工具;注:使用本地的administrator账户登录,不能通过域用户登陆了

Windows azure 联合身份验证服务配置(SSO)_Windows azure_14

开始安装

Windows azure 联合身份验证服务配置(SSO)_Windows azure_15


提示安装组件


完成安装

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_16

启动配置

Windows azure 联合身份验证服务配置(SSO)_Windows azure_17

开始配置

Windows azure 联合身份验证服务配置(SSO)_Windows azure_18

我们需要输入windos azure的portal页面登录管理员

Windows azure 联合身份验证服务配置(SSO)_Windows azure_19

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_20

该用户必须提供公司本地的Active Directory 目录服务具有的企业管理员权限账户的凭据,次账户运行Mictosoft Azure Active Directory 同步工具的计算机所加入的Active directory林中国必须具有企业管理员权限

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_21

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_22

必须勾选同步密码,不然同步过去的用户无法登陆

Windows azure 联合身份验证服务配置(SSO)_Windows azure_23

开始配置:

Windows azure 联合身份验证服务配置(SSO)_Windows azure_24

配置完成

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_25

配置完成后,立即同步

Windows azure 联合身份验证服务配置(SSO)_Windows azure_26

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_27

我们再次回到windows azure portal页面

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_28

页面信息变了

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_29

我们在windows azure portal查看同步过来的用户信息

Windows azure 联合身份验证服务配置(SSO)_Windows azure_30

Windows azure 联合身份验证服务配置(SSO)_Windows azure_31

我们通过该用户信息登录尝试

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_32

我们发现可以 登录,但是登录后提示没有订阅,见到以下页面就能说明是通过本地的信息验证通过的,如果需要改用户成功登录的话,我们需要给改用户委派订阅。

Windows azure 联合身份验证服务配置(SSO)_Windows azure_33


单击设置---管理员

Windows azure 联合身份验证服务配置(SSO)_Windows azure_34

我们选择授权的用户进行添加


添加完成

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_35

最后我们查看FIMSyncadmin成员

Windows azure 联合身份验证服务配置(SSO)_Windows azure_36

Windows azure 联合身份验证服务配置(SSO)_Windows azure_37

我们查看域的状态

Windows azure 联合身份验证服务配置(SSO)_Windows azure_38


本地的Active Directory信息同步过去了,但是我们无法通过本地的域信息进行验证登录,所以我们还需要配置联合身份验证服务(ADFS),配置后我们可以通过本地的Active Direcroy信息进行验证登录。在此我们通过2012R2系统自带的ADFS进行配置。

通过 Windows PowerShell 安装 AD FS 服务器角色

将计算机加域,然后通过domain admins用户登录

在要配置为联合服务器的计算机上,打开 Windows PowerShell 命令窗口并运行以下命令:Install-windowsfeature adfs-federation -IncludeManagementTools

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_39

安装成功

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_40
通过添加角色和功能向导安装 AD FS 服务器角色

打开服务器管理器。为此,请在"开始"屏幕上单击"服务器管理器",或者在桌面上的任务栏中单击"服务器管理器"。在"仪表板"页上的"欢迎"磁贴的"快速启动"选项卡中,单击"添加角色和功能"。也可以在"管理"菜单中单击"添加角色和功能"

"开始之前"页上,单击"下一步"

"选择安装类型"页上,单击"基于角色或基于功能的安装",然后单击"下一步"

"选择目标服务器"页上,单击"从服务器池中选择服务器",确认目标计算机已突出显示,然后单击"下一步"

选择服务器角色页上,单击“Active Directory 联合身份验证服务,然后单击下一步

选择功能页上,单击下一步。系统已预先选择了所需的必备组件。你不需要选择任何其他功能。

“Active Directory 联合身份验证服务(AD FS)”页上,单击下一步

确认确认安装选择页上的信息后,单击安装

安装进度页上,确认已正确安装所有项目,然后单击关闭

ADFS证书申请:

因为在配置ADFS的时候需要一张证书,我们安装iis服务,然后申请证书

注:ADFS服务器的名称不要和ADFS服务重名:(服务器名称和服务名称一定保持不一样)

比如:ADFS服务器的HostName为:ADFSS.IIOSOFT.COM

而注册ADFS服务的证书名称为ADFS.IIOSOFT.COM

Windows azure 联合身份验证服务配置(SSO)_Windows azure_41

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_42

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_43

填写证书服务名称,我们建议按照严格的证书申请方法来申请,我们定义名称为adfs.iiosoft.com,及其他的组织信息,然后单击下一步来玩完成

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_44

Windows azure 联合身份验证服务配置(SSO)_Windows azure_45

我们通过内部的CA服务器进行证书申请提交

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_46

Windows azure 联合身份验证服务配置(SSO)_Windows azure_47

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_48

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_49

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_50

完成证书申请操作

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_51

因为我们需要一张带私钥的证书,所以我们需要导出证书文件

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_52

输入证书自定义密码

Windows azure 联合身份验证服务配置(SSO)_Windows azure_53

我们开始配置ADFS服务

http://technet.microsoft.com/zh-cn/library/dn528860.aspx

在服务器管理器的“仪表板”页上,单击“通知”标志,然后单击“在服务器上配置联合身份验证服务”

此时将启动Active Directory 联合身份验证服务配置向导”

Windows azure 联合身份验证服务配置(SSO)_Windows azure_54

“连接到 AD DS页上,指定对此计算机加入到的 AD 域拥有域管理员权限的帐户,然后单击“下一步”

Windows azure 联合身份验证服务配置(SSO)_Windows azure_55选择带有私钥的证书文件;

“指定服务属性”页上执行以下操作,然后单击“下一步”

导入包含你前面获取的 SSL 证书和密钥的 .pfx 文件。如查看有关部署 AD FS 的要求的“证书要求”部分中所述,必须获取此证书并将它复制到要配置为联合服务器的计算机上。若要通过向导导入该 .pfx 文件,请单击“导入”并浏览到该文件的位置。出现提示时,请指定该 .pfx 文件的密码。

提供联合身份验证服务的名称。例如 fs.contoso.com。此名称必须与证书中的使用者名称或使用者可选名称之一匹配。提供联合身份验证服务的显示名称。例如 Contoso Corporation。将在 AD FS 登录页上向用户显示此名称。

Windows azure 联合身份验证服务配置(SSO)_Windows azure_56

我们选择刚才导出的带私钥的证书文件

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_57导入成功-

注:此处的联合身份验证服务器的名称一定要为:ADFS.IIOSOFT.COM,显示名称无所谓:当然该名称为申请证书时候定义的FQDN名称。该名称是无法更改的。所以在规划的时候一定要定义好。

运行ADFS服务的服务器名称一定不要和ADFS服务名称重名;

服务器的名称为:ADFSS.IIOSOFT.COM(或者定义其他的名称)

服务名称为:ADFS.IIOSOFT.COM

Windows azure 联合身份验证服务配置(SSO)_Windows azure_58

“指定服务帐户”页上指定一个服务帐户。可以创建或使用现有的组托管服务帐户 (gMSA),也可以使用现有的域用户帐户。如果选择创建新 gMSA 的选项,请指定新帐户的名称。如果选择使用现有 gMSA 或域帐户的选项,请单击“选择...”按钮以选择一个帐户。

使用 gMSA 的好处是可以利用它的自动协商密码更新功能。

注意:如果要使用 gMSA,则运行 Windows Server 2012 操作系统的环境中必须至少有一个域控制器。

如果禁用了 gMSA 选项并看到类似于“由于尚未设置 KDS 根密钥,因此组托管服务帐户不可用”的错误消息,可以通过在 Active Directory 域中 Windows Server 2012 或更高版本的域控制器上执行以下 Windows PowerShell 命令,在域中启用 gMSA:Add-KdsRootKey –EffectiveTime (Get-Date).AddHours(-10)。然后返回到向导,依次单击“上一步”按钮和“下一步”按钮以重新进入“指定服务帐户”页。现在应该已启用 gMSA,你可以选择它并输入所需的 gMSA 帐户名。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_59我们需要在DC上执行以下命令

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_60

因为我们本地有一个SQL 数据库的,所以我们选择了指定的数据库,其实建议选择默认的数据库即可。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_61

Windows azure 联合身份验证服务配置(SSO)_Windows azure_62

先决条件检查

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_63初始化数据库

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_64

提示错误,其实该错误可以忽略:

对于以下的错误问题我们分析为:

当运行ADFS服务的服务器名称和ADFS服务的名称命名重合时会出现以下问题:

所以我们如果把运行ADFS服务的服务器名称定义其他名称在运行到改配置的时候不会出现该提示错误

如果ADFS服务名称和ADFS服务器的名称不一样的话,就正常安装了,

Windows azure 联合身份验证服务配置(SSO)_Windows azure_65

如果出现以下错误。我们可以在命令提示符下运行:

setsqn -q host/adfs.iiosoft.com 进行注册

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_66

出现以下问题原因是:ADFS服务器和ADFS服务名称重名了,我们需要卸载ADFS服务后,然后修改ADFS服务器的计算机名,然后保持ADFS服务器的名称和ADFS服务名称不一致即可

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_67

提示错误,所以我们需要在DC上执行一个命令:Windows azure 联合身份验证服务配置(SSO)_Windows azure_68Windows azure 联合身份验证服务配置(SSO)_Windows azure_69我们查看ADFS相关的服务器配置信息

Windows azure 联合身份验证服务配置(SSO)_Windows azure_70

ADFS配置完后,我们还需要最重要的一步,需要在ADFSAzure AD之间建立信任关系

http://technet.microsoft.com/zh-cn/library/jj205461.aspx

我们首先是在ADFS下安装azure powershell

Windows azure 联合身份验证服务配置(SSO)_Windows azure_71准备好以上工作后,我们需要在本地的Active Directoryazure Active Directory之间创建信任关系了。

http://technet.microsoft.com/zh-cn/library/jj151815.aspx

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_72

Windows azure AD模块下载链接:

https://bposast.vo.msecnd.net/MSOPMW/Current/amd64/AdministrationConfig-zh-hans.msi



Windows azure 联合身份验证服务配置(SSO)_Windows azure_73

下载后我们开始安装:提示错误,

Windows azure 联合身份验证服务配置(SSO)_Windows azure_74

http://www.microsoft.com/zh-cn/download/details.aspx?id=41950

Windows azure 联合身份验证服务配置(SSO)_Windows azure_75

开始安装online services

Windows azure 联合身份验证服务配置(SSO)_Windows azure_76完成安装

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_77

开始安装windows azure AD模块

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_78

安装完成,因为该软件非常小,所以比较快

Windows azure 联合身份验证服务配置(SSO)_Windows azure_79

以管理员运行:

Windows azure 联合身份验证服务配置(SSO)_Windows azure_80

添加域:

http://technet.microsoft.com/zh-cn/library/jj205461.aspx#BKMK_ConvertDomain

要联合的每个域必须添加为单一登录域,或者必须从标准域转换为单一登录域。添加或转换域会在 AD FS Microsoft Azure Active Directory (Microsoft Azure AD) 之间建立信任。

打开 Microsoft Azure Active Directory 模块。

运行 $cred=Get-Credential。当 cmdlet 提示你输入凭据时,键入云服务管理员帐户凭据。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_81

运行 Connect-MsolService –Credential $cred。此 cmdlet 会将你连接到 AzureAD。在运行该工具安装的任何附加 cmdlet 之前,需要创建将你连接到 Azure AD 的上下文。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_82

运行 Set-MsolAdfscontext -Computer<AD FS primary server>,其中 <AD FS primaryserver> 是主 AD FS 服务器的内部 FQDN 名称。此 cmdlet 创建将你连接到 AD FS 的上下文。

备注:如果已在主 AD FS 服务器上安装了 Microsoft Azure Active Directory 模块,则不需要运行此 cmdlet。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_83

运行 New-MsolFederatedDomain –DomainName<domain>,其中 <domain> 是需要添加并需要启用单一登录的域。此 cmdlet 添加将针对联合身份验证进行配置的新顶级域或子域。

 备注使用 New-MsolFederatedDomain cmdlet 添加顶级域后,将无法使用 New-MsolDomain cmdlet 添加标准域(非联合)

如果已经执行了后期卸载又重装了。我们不能再执行New-MsolFederatedDomain –DomainName<domain>命令了。我们需要执行update命令来更新了。执行New-MsolFederatedDomain –DomainName<domain>是第一次配置或者第一台服务器的时候需要执行该命令。如果已经执行了就通过以下命令来更新即可。

update-MsolFederatedDomain –DomainName<domain>

Windows azure 联合身份验证服务配置(SSO)_Windows azure_84

请使用 New-MsolFederatedDomain cmdlet 的结果提供的信息,联系域注册机构以创建所需的 DNS 记录。这将验证你是否拥有该域。请注意,这可能需要长达 15 分钟的传播时间,具体取决于注册机构。将更改传播到整个系统中可能需要长达 72 小时。有关详细信息,请参阅向任何域名注册机构验证域

再次运行 New-MsolFederatedDomain,并指定同一域名以完成此过程。

我们需要在dns上添加txt记录; txt=MS=ms94955184

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_85我们在内部dns上添加txt记录

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_86

如果第一配置安装的话执行:New-MsolFederatedDomain –DomainName<domain>

如果是卸载后重装或者定义一个群集的话,我们需要执行:Update-MsolFederatedDomain –DomainName<domain>

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_87

添加后我们再回到windows azure portal页面进行查看AD域验证信息:

Windows azure 联合身份验证服务配置(SSO)_Windows azure_88

转换域

将现有域转换为单一登录域时,每个许可用户将成为联合用户,并使用其现有 Active Directory 企业凭据(用户名和密码)来访问你的云服务。目前不可能执行单一登录的分阶段部署,但可以使用生产型 Active Directory 林中的一组生产用户试点单一登录。有关详细信息,请参阅Run a pilot to test single signon before setting it up(optional)

 备注

最好在用户最少的时候(如周末)执行转换,以减少对用户的影响。

若要将现有域转换为单一登录域,请执行以下步骤。

打开 Microsoft AzureActive Directory 模块。

运行 $cred=Get-Credential。当 cmdlet 提示你输入凭据时,键入云服务管理员帐户凭据。

运行 Connect-MsolService –Credential $cred。此 cmdlet 会将你连接到 Azure AD。在运行该工具安装的任何附加cmdlet 之前,需要创建将你连接到 AzureAD 的上下文。

运行 Set-MsolAdfscontext -Computer <AD FSprimary server>,其中 <AD FSprimary server> 是主 AD FS 服务器的内部 FQDN 名称。此 cmdlet 创建将你连接到 AD FS 的上下文。

 备注

如果已在主 AD FS 服务器上安装了 Microsoft Azure Active Directory 模块,则不需要运行此 cmdlet。

运行 Convert-MsolDomainToFederated–DomainName <domain>,其中 <domain>

是要进行转换的域。此 cmdlet 将该域从标准身份验证更改为单一登录。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_89

 备注

若要验证转换是否正常工作,请通过运行 Get-MsolFederationProperty –DomainName <domain>(其中 <domain> 是你要查看其设置的域),来比较 AD FS 服务器与 Azure AD 中的设置。如果设置不匹配,你可以运行 Update-MsolFederatedDomain –DomainName <domain> 来同步设置。

操作完成后,我们再次回到windows azure portal页面查看同步信息:

Windows azure 联合身份验证服务配置(SSO)_Windows azure_90为了保证我们通过本地的AD用户验证,我们还需要在windows portal页面上添加管理员

Windows azure 联合身份验证服务配置(SSO)_Windows azure_91Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_92

再次我们需要在dns上添加一条A记录:

ADFS服务名称执行ADFS服务器

ADFS服务名称为:ADFS.IIOSOFT.COM

ADFS服务器名称为:ADFSSERVER.IIOSOFT.COM,IP:10.1.1.50

Windows azure 联合身份验证服务配置(SSO)_Windows azure_93

我们在windowsazure.cn的登录页面进行登录的时候,输入本地用户名输入的时候,单击密码数据框的时候自动进行重定向

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_94正在重定向

Windows azure 联合身份验证服务配置(SSO)_Windows azure_95重定向完成,输入有效的本地AD账户信息进行验证登录

Windows azure 联合身份验证服务配置(SSO)_Windows azure_96

最后我们通过本地用户进行登陆成功

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_97

我们最后再说一个登陆的问题。比如我们本地是使用域用户登录,然后访问windows azure的portal也是使用本地的域用户等,每次登录都需要输入账户及密码。这样很不方便。但是我们可以通过设置浏览器来提高登录的效率,但是这样不安全。

  1. 单击浏览器工具----internet设置---安全---本地intranet---站点

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_982.默认勾选---然后单击高级

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_993.添加adfs服务的FQDN----adfs.iiosoft.com

注:不是ADFS服务器的FQDN哦;ADFS服务是运行在windows或者其他os上的应用服务。而ADFS服务器是承载ADFS应用服务的介质;添加后保存确认,然后关闭浏览器重新访问即可。

大家为了测试不必清楚浏览器缓存,因为据了解ie的cokie不对windows azure的服务做缓存。

Windows azure 联合身份验证服务配置(SSO)_联合身份验证配置_100