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

代码示例:ASP.NET Web 服务

发布时间: 2011年4月

更新时间: 2015年6月

应用到: Azure

本示例演示如何将 Microsoft Azure Active Directory 访问控制(也称为访问控制服务或 ACS) 集成到简单的 Web 服务中。它使用 ASP.NET 作为 Web 服务主机以及命令行客户端。ASP.NET Web 服务需要 ACS 颁发的 SWT 令牌。客户端使用注册到 ACS 的用户名和密码从 ACS 请求令牌。本示例的代码位于 Microsoft Azure Active Directory 访问控制 (ACS) 代码示例 包的 ASPNETSimpleService (C#\WebServices\ASPNETSimpleService) 子目录中。

若要运行本示例,你需要:

  1. 在 Azure 主页中创建帐户,并创建 “访问控制”命名空间。

  2. Visual Studio 2010(任何版本)

有关更多详细信息,请参阅 ACS 先决条件 (http://go.microsoft.com/fwlink/?LinkId=221065)。

可使用 ACS 管理门户或 ACS 管理服务来执行本示例所需的 ACS 配置。本主题介绍了这两个选项。

  1. 选项 1:使用 ACS 管理门户配置示例

  2. 选项 2:使用 ACS 管理服务配置示例

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

  2. 若要创建访问控制命名空间,请依次单击“新建”、“应用程序服务”和“访问控制”,然后单击“快速创建”。(或者,先单击“访问控制命名空间”,然后单击“新建”。)

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

    此操作将打开访问控制服务管理门户。

  4. 若要向 ACS 注册你的应用程序,请单击“信赖方应用程序”,单击“添加”,然后在窗体中输入以下信息:

    • “名称”字段中,输入 ASPNET Simple Service

    • “领域”字段中,输入 http://localhost:8000/Service/

    • “返回 URL”字段中,输入 http://localhost:8000/Service/

    • “令牌格式”下拉列表框中选择 SWT

    • 在“令牌签名密钥”字段中,单击“生成”以创建一个令牌签名密钥。复制此密钥,以便稍后在配置中使用。

    • 在“到期日期”字段中,输入该密钥的适当到期日期。到此日期后,该密钥将不再有效。

    • 让其他字段保留其默认值。

  5. 单击“保存”,然后单击“主页”以返回到访问控制服务管理门户的主页。

  6. 注册信赖方后,便可创建一些规则来限定 ACS 可颁发给应用程序的声明。在此示例中,我们将创建一条规则,以便使用值 reverse 授予任何已注册用户名和密码一个 action 声明。若要创建此规则,请单击“主页”以返回到访问控制服务管理门户的主页,单击“规则组”,然后单击“用于 ASP.NET 简单服务的默认规则组”。添加具有以下设置的新规则:

    • “声明颁发者”部分,选择“访问控制服务”

    • “输入声明类型”部分,选择“任何”

    • “输入声明值”部分,选择“任何”

    • “输出声明类型”部分,选择“输入类型”,并在该字段中键入 action

    • “输出声明值”部分,选择“输入值”,并在该字段中键入 reverse

  7. 与网站示例不同,此示例依赖于由 ACS 管理的凭据。配置 ACS 的最后一步是为要使用的客户端应用程序注册用户名和密码。若要配置新的用户名和密码,请单击“主页”以返回到访问控制服务管理门户的主页,单击“服务标识”,单击“添加”,然后填写该表单。对于此示例,使用用户名 acssample、凭据类型“密码”和密码 pass@word1

  8. 单击“保存”,然后单击“主页”以返回到访问控制服务管理门户的主页。

Visual Studio 示例解决方案具有一个名为 ConfigureSample 的控制台应用程序,该应用程序使用 ACS 管理服务和 Common 类库中定义的通用帮助器。可以使用此应用程序来配置用于本示例的 “访问控制”命名空间。

  1. 若要配置本示例,请打开 SamplesConfiguration.cs (acs\Management\ManagementService\Common)。将 Common 类库中的 SamplesConfiguration 类中的占位符替换为有关你的 “访问控制”命名空间的信息。你可以在 ACS 管理门户中找到这些信息。

    导航到 ACS 管理门户:转到 Microsoft Azure 管理门户 (https://manage.WindowsAzure.com) 并登录,然后单击“Active Directory”。(故障排除提示:“Active Directory”项缺失或不可用) 若要管理访问控制命名空间,请选择该命名空间,然后单击“管理”。(或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)

    • ServiceNamespace - 输入 “访问控制”命名空间的名称。

    • ManagementServiceIdentityName - 输入 ACS 管理服务帐户的名称。默认值为 ManagementClient

      若要查找管理服务帐户名,请在 ACS 管理门户中单击“管理服务”。帐户已按名称列在“管理服务帐户”下面。

    • ManagementServiceIdentityKey - 输入与管理服务帐户关联的密码。

      若要查找管理服务帐户密码,请在 ACS 管理门户中单击“管理服务”。单击管理服务帐户的名称,然后在“凭据”下面单击“密码”。密码将显示在“密码”字段中。若要复制密码,请单击“显示密码”。

  2. 在 Visual Studio 中运行 ConfigureSample 应用程序。此时将会配置 ACS 以运行本示例。

  3. ConfigureSample 应用程序运行完后,会将生成的信赖方签名密钥输出到控制台。请将此密钥复制到剪贴板。

  1. 在 Visual Studio 中打开本示例。此解决方案由两个项目组成:服务客户端

  2. Common\SamplesConfiguration.cs 中输入 “访问控制”命名空间的详细信息(如果尚未这么做)。有关详细信息,请参阅“选项 2:通过 ACS 管理服务进行配置”的步骤 1。“服务”和“客户端”项目也使用此文件。

  3. 在“服务”项目中打开 web.config 文件。在相应的 AppSettings 元素中输入令牌签名密钥。如果你使用管理服务配置了 ACS,则此项是你复制到剪贴板的值。若要获取令牌签名密钥,请参阅门户的“证书和密钥”区域。以下代码段显示了服务 web.config 文件的此区域。

    <appSettings>
        <add key="IssuerSigningKey" value="...update to your signing key..."/>
      </appSettings>
    
    
  4. 在“客户端”项目中打开 app.config 文件。在相应的 AppSettings 元素中输入你的用户名和密码。若要获取你之前注册的用户名和密码,请参阅门户的“服务标识”区域。以下代码段显示了客户端 app.config 文件的此区域(已适当更新)。

      <appSettings>
        <add key="OAuthUserName" value="acssample" />
        <add key="OAuthPassword" value="pass@word1" />
        <add key="ServiceAddress" value="http://localhost:8000/Service/Default.aspx" />   
      </appSettings>
    
    
  5. 若要运行此示例,请启动服务,然后启动客户端。在客户端上,输入要反向的字符串。然后,客户端控制台窗口会显示输出,指示已收到来自 ACS 的令牌。

显示: