登录页与主领域发现
更新时间:2015 年 6 月 19 日
适用于:Azure
Microsoft Azure Active Directory 访问控制 (也称为访问控制服务或 ACS) 提供了两种为网站或应用程序生成联合登录页的简单方法:
选项 1:ACS-Hosted登录页
ACS 托管可在信赖方应用程序中使用的基本联合登录页。 此登录页在你的命名空间的 WS 联合身份验证协议终结点上托管,并可通过具有以下格式的 URL 访问。
https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignin1.0&wtrealm=<YourAppRealm>&redirect=false
在此 URL 中,将 <YourNamespace> 替换为访问控制命名空间的名称。 此外,此 URL 需要以下参数:
wa - 设为 wsignin1.0
wtrealm - 设为信赖方应用程序的领域值。 若要查找领域值,请在 ACS 管理门户中单击 “信赖方应用程序”,选择一个应用程序,并查看 “领域 ”字段。
若要查找信赖方应用程序的登录页链接,请执行以下操作:
转到Microsoft Azure管理门户 (https://manage.WindowsAzure.com) 登录,然后单击“Active Directory”。 (故障排除提示: “Active Directory”项缺失或不可用)
若要管理访问控制命名空间,请选择该命名空间,然后单击“管理”。 (或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)
单击“应用程序集成”,单击“登录页”,然后选择信赖方应用程序。
“登录页集成”页将显示该应用程序的登录页选项。
下图显示了支持 Windows Live ID (Microsoft 帐户) 、Google、Yahoo!、Facebook 和“Contoso Corp”的应用程序的默认登录页,这是一个虚构WS-Federation标识提供者。
若要将 WS 联合身份验证标识提供程序按钮替换为电子邮件地址文本框,请将电子邮件地址后缀添加到 WS 联合身份验证标识提供程序的登录页链接中。 当为信赖方应用程序配置许多 WS 联合身份验证标识提供程序时,此方法很有用。 下图显示了一个示例页。
若要加快 ACS 与信赖方应用程序的集成,请使用默认的 ACS 托管登录页。 若要自定义此页的布局和外观,请将默认登录页另存为一个 HTML 文件并将 HTML 和 JavaScript 复制到可以进行自定义的应用程序。
选项 2:将自定义登录页作为应用程序的一部分托管
若要完全控制联合登录页的外观、行为和位置,ACS 提供了一个 JSON 编码的元数据源,其中包含名称、登录 URL、图像和电子邮件域名 (仅) 标识提供者。 此馈送称为主领域发现元数据馈送。
自定义登录页示例
若要下载每个信赖方应用程序的 HTML 登录页示例,请执行以下操作:
转到Microsoft Azure管理门户 (https://manage.WindowsAzure.com) 登录,然后单击“Active Directory”。 (故障排除提示: “Active Directory”项缺失或不可用)
若要管理访问控制命名空间,请选择该命名空间,然后单击“管理”。 (或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)
单击“应用程序集成”,单击“登录页”,然后选择信赖方应用程序。
在“登录页集成”页上,单击“下载示例登录页”。
示例 HTML 代码与 ACS 托管登录页的 HTML 代码相同。
此示例包括用于呈现页的 JavaScript 函数。 页面底部的脚本标记将调用元数据馈送。 自定义登录页可以通过纯客户端 HTML 和 JavaScript 使用元数据,如此示例所示。 还可以使用该馈送通过任何支持 JSON 编码的语言呈现自定义登录控件。
主领域发现元数据馈送
若要查找信赖方应用程序的主领域发现元数据馈送 URL,请执行以下操作:
转到Microsoft Azure管理门户 (https://manage.WindowsAzure.com) 登录,然后单击“Active Directory”。 (故障排除提示: “Active Directory”项缺失或不可用)
若要管理访问控制命名空间,请选择该命名空间,然后单击“管理”。 (或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)
单击“应用程序集成”,单击“登录页”,然后选择信赖方应用程序。
URL 显示在选项 2 下的应用程序的“登录页集成”页上:将登录页作为应用程序的一部分托管。
以下是示例主领域发现馈送 URL。
https://YourNamespace.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=YourAppRealm&reply_to=YourAppReturnURL&context=&version=1.0&callback=OptionalFunctionName
此 URL 使用以下参数:
YourNamespace - 必需。 设为 Azure 命名空间的名称。
protocol - 必需。 这是信赖方应用程序用来与 ACS 通信的协议。 在 ACS 中,此值必须设置为 wsfederation。
realm - 必需。 这是你在 ACS 管理门户中为信赖方应用程序指定的领域。
version - 必需。 在 ACS 中,此值必须设置为 1.0。
reply_to - 可选。 这是在 ACS 管理门户中为信赖方应用程序指定的返回 URL。 如果省略,则返回 URL 的值设置为 ACS 管理门户中为信赖方应用程序配置的默认值。
context - 可选。 这是任何其他上下文,可以传回令牌中的信赖方应用程序。 ACS 无法识别这些内容。
callback - 可选。 可以将此参数设为需要在加载 JSON 馈送时运行的 JavaScript 函数的名称。 JSON 馈送字符串是传递给此函数的参数。
注意
JSON 编码的元数据馈送可能会更改,因此建议你不要缓存它。
JSON 馈送数据格式
当使用前文所述的有效参数请求元数据馈送时,响应是一个文档,内含 JSON 编码的数组组成的数组,其中每个内部数组均表示一个包含以下字段的标识提供程序:
名称 - 标识提供程序的人工可读的显示名称。
LoginUrl - 构造的登录请求 URL。
LogoutUrl - 此 URL 允许最终用户从他们用于登录的标识提供程序中注销。 目前仅支持和Windows Live ID (Microsoft 帐户) ,并且对于其他标识提供者为空。
ImageUrl - 要显示的图像,如 ACS 管理门户中配置的那样。 如果没有图像,则为空。
EmailAddressSuffixes - 与标识提供程序关联的电子邮件地址后缀的数组。 在 ACS 中,只能通过 ACS 管理门户为标识提供者配置电子邮件地址后缀。 如果未配置后缀,则返回一个空数组。
以下示例演示为信赖方应用程序配置了 Windows Live ID 和 AD FS 2.0 时的 JSON 源。 用户已在 ACS 管理门户中为 Windows Live ID 设置图像 URL,并为标识提供者添加了电子邮件域后缀。
注意
为简洁起见,我们已添加了换行以提高可读性,并简化了 URL。
[ {
"Name":"Windows Live ID",
"LoginUrl":" https://...",
"LogoutUrl":" https://...",
"ImageUrl":"https://...",
"EmailAddressSuffixes":[]
},
{
"Name":"My ADFS 2.0 Provider",
"LoginUrl":" https://...",
"LogoutUrl":" https://...",
"ImageUrl":"",
"EmailAddressSuffixes":[“contoso.com”]
} ]