本文档已存档,并且将不进行维护。

操作方法:使用 ACS 创建我的第一个声明感知 ASP.NET 服务

发布时间: 2011年4月

更新时间: 2015年6月

应用到: Azure

  • Microsoft Azure Active Directory 访问控制(也称为访问控制服务或 ACS)

note备注
本主题与传统技术相关。若要创建 XML Web 服务和 XML Web 服务客户端,请参阅 http://go.microsoft.com/fwlink/?LinkID=220304

本主题介绍如何将简单的 ASP.NET Web 服务与 ACS 相集成。 通过将 Web 服务与 ACS 集成,便可以在代码中区分身份验证和授权的功能。ACS 为 Web 服务提供用于对客户端进行身份验证和授权的机制。有关详细信息,请参阅 Web 服务和 ACS

假设在某个 Web 服务方案中,Web 服务客户端不具有访问浏览器的权限,但能够自主运行(无需用户参与)。此外,在 Web 服务方案中,客户端还可以使用服务标识或企业标识来获取对 Web 服务的访问权限。在本主题所述的练习中,客户端可以使用 ACS 中配置的服务标识凭据类型来获取对示例 ASP.NET Web 服务的访问权限。

若要执行本主题中的步骤,你必须下载示例 ASP.NET 服务。有关详细信息,请参阅代码示例:ASP.NET Web 服务

使用 ACS 管理门户可以通过添加标识提供程序、配置信赖方应用程序、定义规则和规则组以及建立信赖方应用程序信任的凭据来配置 “访问控制”命名空间。

  1. 转到 Microsoft Azure 管理门户 (https://manage.WindowsAzure.com) 并登录,然后单击“Active Directory”。(故障排除提示:“Active Directory”项缺失或不可用

  2. 若要管理访问控制命名空间,请选择该命名空间,然后单击“管理”。(或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)

本部分介绍如何添加信赖方应用程序。有关信赖方应用程序的详细信息,请参阅信赖方应用程序

  1. 在 ACS 管理门户中,单击左侧树中的“信赖方应用程序”,或单击“开始”部分下的“信赖方应用程序”链接。

  2. 在“信赖方应用程序”页上,单击“添加”。

  3. 在“添加信赖方应用程序”页上执行以下操作:

    • 在“名称”中键入信赖方应用程序的名称。对于本练习,请键入 ASPNET Simple Service

    • 在“模式”中选择“手动输入设置”。

    • 在“领域”中,键入 ACS 颁发的安全令牌所应用到的 URI。对于本练习,请键入 http://localhost:8000/Service

    • 在“返回 URL”中,键入 ACS 将安全令牌返回到的 URL。对于本练习,请键入 http://localhost:8000/Service

    • 在“错误 URL (可选)”中,输入在登录过程中发生错误时 ACS 可以向其发布消息的 URL。对于本练习,请将此字段保留为空。

    • 在“令牌格式”中,选择 ACS 在向此信赖方应用程序颁发安全令牌时所使用的令牌格式。对于本练习,请选择“SWT”。有关令牌和令牌格式的详细信息,请参阅 ACS 中支持的令牌格式信赖方应用程序中的“令牌格式”。

    • 在“令牌生存期(秒)”中,指定 ACS 颁发的安全令牌保持有效的时间长度。对于本练习,请接受默认值 600。有关令牌生存期的详细信息,请参阅信赖方应用程序中的“令牌加密策略”。

    • 在“标识提供程序”中,你可以选择要用于此信赖方应用程序的标识提供程序。

      但是,本练习不使用任何标识提供程序,客户端通过服务标识获取对 Web 服务的访问权限,因此,请确保清除“Windows Live ID”旁边的复选框。

      有关服务标识的详细信息,请参阅服务标识

    • 在“规则组”中,选择此信赖方应用程序在处理声明时使用的规则组。对于本练习,请接受默认选中的“新建规则组”。有关规则组的详细信息,请参阅规则组和规则

    • 在“令牌签名设置”下的“令牌签名密钥”中,单击“生成”按钮为此信赖方生成一个 256 位对称密钥。

  4. 单击“保存”

规则确定声明如何从标识提供程序或 ACS(如果 ACS 是声明颁发者)传递到信赖方应用程序。有关规则和规则组的详细信息,请参阅规则组和规则

  1. 在“ACS 管理门户主页”上,单击左侧树中的“规则组”,或者单击“开始”部分下的“规则组”链接。

  2. 在“规则组”页上,单击“ASPNET Simple Service 的默认规则组”(因为你已将信赖方应用程序命名为 ASPNET Simple Service)。

  3. “编辑规则组”页上,单击“添加”

  4. 在“添加声明规则”页上执行以下操作:

    • 在“If”部分中的“声明颁发者”下,选择“访问控制服务”。

    • 在“If”部分中的“输入声明类型”下,保留默认选定的“任何”。

    • 在“If”部分中的“输入声明值”下,保留默认选定的“任何”。

    • 在“Then”部分中的“输出声明类型”下,选择“输入类型”,然后键入 action,因为这是你在本练习中使用的 ASP.NET Web 服务示例代码中所指定的声明类型: requiredClaimType = “action”。你可以在 acs\WebServices\ASPNETSimpleService\Service 下的 Default.aspx.cs 中的示例代码内找到此字符串。

    • Then部分中的输出声明值下,选择输入值,然后键入 reverse,因为这是你在本练习中使用的 ASP.NET Web 服务示例代码中所指定的声明类型:requiredClaimValue = “reverse”。你可以在 acs\WebServices\ASPNETSimpleService\Service 下的 Default.aspx.cs 中的示例代码内找到此字符串。

    • 单击“保存”

  5. 编辑规则组页上,单击保存

在本主题所述的练习中,客户端使用已在 ACS 中注册并受其管理的某个用户名和密码(即 ACS 服务标识)从 ACS 请求 ACS 颁发的简单 Web 令牌 (SWT)。本部分介绍如何配置 ACS 服务标识,或如何配置客户端可用来从 ACS 请求令牌的 ACS 托管凭据。有关详细信息,请参阅服务标识。对于本练习,请将服务标识名称设置为 acssample(在从 ACS 请求令牌时,ASP.NET 服务客户端使用此值作为用户名),将密码设置为 pass@word1

  1. 在“ACS 管理门户主页”上,单击左侧树中的“服务标识”。

  2. 在“服务标识”页上,单击“添加”。

  3. 在“添加服务标识”页上执行以下操作,然后单击“保存”:

    1. 在“名称”中,键入 acssample

    2. 在“类型”中,选择“密码”。

    3. 在“密码”中,键入 pass@word1

    4. 保留“生效日期”和“到期日期”中的默认值不变。

  4. 在“编辑服务标识”页上,单击“保存”。

本部分介绍如何将 ACS 与示例 ASP.NET 服务相集成。有关详细信息,请参阅代码示例:ASP.NET Web 服务

  1. 在你下载的示例中找到 ASPNETSimpleService.sln,并在 Visual Studio® 2010 中将其打开。

  2. 在 Visual Studio 2010 的“解决方案资源管理器”中的“解决方案‘ASPNETSimpleService’”下,双击“web.config”。

  3. web.config 中,输入 “访问控制”命名空间名称,以及你在执行前面的步骤时在 ACS 中配置的令牌签名密钥。若要查看该令牌签名密钥,请在 ACS 管理门户中单击“证书和密钥”。

    以下代码段演示了需要更新 web.config 文件的哪些元素。

    <appSettings>
        <add key="AccessControlHostName" value="accesscontrol.windows.net"/>
        <add key="AccessControlNamespace" value="...enter your “访问控制”命名空间 name..."/>
        <add key="IssuerSigningKey" value="...enter your signing key..."/>
      </appSettings>
    
  4. 保存已更新的 web.config 文件。

  5. 在 Visual Studio 2010 的“解决方案资源管理器”中的“解决方案‘ASPNETSimpleService’”下,双击 app.config 文件。

  6. app.config 文件中,输入 “访问控制”命名空间的名称,以及你在执行前面的步骤时在 ACS 中配置的服务标识用户名和密码。若要查看该用户名和密码,请在 ACS 管理门户中单击“服务标识”。

    以下代码段演示了需要更改 app.config 文件的哪些元素。

    <appSettings>
        <add key="AccessControlHostName" value="accesscontrol.windows.net"/>
        <add key="AccessControlNamespace" value="...enter your “访问控制”命名空间 name..."/>
        <add key="WrapPassword" value="...update to your password..."/>
        <add key="WrapUsername" value="...update to your username..."/>
        <add key="ServiceAddress" value="http://localhost:8000/Service/Default.aspx" />
      </appSettings>
    
  7. 保存已更新的 app.config 文件。

本部分介绍如何测试 ASP.NET Web 服务和 ACS 之间的集成。

  1. 若要运行 ASP.NET 服务,请在 Visual Studio 2010 中按 F5。

  2. 若要运行 ASP.NET Web 服务客户端,请右键单击解决方案资源管理器中的“客户端”,选择“调试”,然后选择“启动新实例”。

    此时会打开一个包含以下消息的命令行窗口:Enter a string to reverse, then press <ENTER>

  3. 输入任意字符串,例如 hello world!,然后按 Enter。

    如果输入的是 hello world!,则应在控制台应用程序上看到以下响应:!dlrow olleh

另请参阅

显示: