代码示例:OAuth 2.0 证书身份验证

更新时间:2015 年 6 月 19 日

适用于:Azure

此示例演示如何通过演示 X.509 证书签名的 SAML 令牌,向Microsoft Azure Active Directory 访问控制 ((也称为访问控制服务或 ACS) )进行身份验证。 此证书对应于在 ACS 上配置的 ServiceIdentity,ACS 会颁发具有 ServiceIdentity 的 nameidentifier 声明的 SWT。 此 SWT 用于通过 OAuth 2.0 所保护的资源进行身份验证。 本示例遵从 OAuth 2.0 协议草案 13。 此示例的代码位于 Microsoft Azure Active Directory 访问控制 (ACS) 代码示例包的 OAuth2 (C#\OAuth) 2 子目录中。

先决条件

若要运行此示例,需要:

  1. Azure 门户和访问控制命名空间中的帐户。

  2. Visual Studio 2010 (任何版本)

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

配置示例

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

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

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

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

使用 ACS 管理门户配置示例

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

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

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

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

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

    • 在“名称”字段中,输入 OAuth2 RP

    • “领域 ”字段中,输入 https://oauth2relyingparty/

    • 在“令牌格式”字段中,选择“SWT”

    • 单击“生成”以创建新密钥

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

  5. 单击“ 保存”。

  6. 注册信赖方后,现在可以创建确定 ACS 向应用程序发出的声明的规则。 在此示例中,我们将创建一个规则,用于授予 ACS 生成的任何声明通过。

    若要创建此规则,请单击“规则组”,然后单击“OAuth2 RP 的默认规则组”。 使用以下设置添加新规则:

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

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

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

    • 在“输出声明类型”部分,选择“传递输入声明类型”

    • 在“输出声明值”部分,选择“传递输入声明值”

  7. 此示例依赖于 ACS 管理的凭据。

    若要为客户端应用程序配置新客户端证书,请单击“服务标识”,单击“添加”,然后键入一个名称。 添加凭据类型“X.509 证书”,并在本示例的 Certificates 文件夹中通过浏览找到 ACS2ClientCertificate.cer 文件。 单击“ 保存”。

  8. 配置 ACS 后,打开Visual Studio。

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

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

使用 ACS 管理服务配置示例

  1. 使用有关访问控制命名空间的信息更新 Common 类库。 打开 SamplesConfiguration.cs 并输入以下信息:

    • ServiceNamespace - 这是访问控制命名空间的名称

    • ManagementServiceIdentityName - 这是管理服务帐户的名称

    • ManagementServiceIdentityKey - 这是与管理服务帐户关联的密码

    • AcsHostUrl - 这是 ACS 的主机名

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

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

运行示例

运行示例

  1. 在 Visual Studio 中打开该示例。 除了 ConfigureSampleCommon 之外,该解决方案还包含两个项目: ProtectedResourceWebAppClient

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

  3. ProtectedResourceWebApp 项目中打开 web.config 文件。

  4. 在相应的 AppSettings 元素中输入令牌签名密钥。 如果使用管理服务配置 ACS,则此值将复制到剪贴板。 若要获取令牌签名密钥,请在 ACS 门户中单击“ 证书和密钥”。 以下代码段显示了 web.config 文件的此节:

    <appSettings>
       <add key="SigningKey" value="...Copy Signing Key..."/>
    </appSettings>
    
  5. 若要运行本示例,请启动 ProtectedResourceWebApp。 此时将显示一个 Web 浏览器,但文本框是空的,因为该 Web 浏览器未经过身份验证。

  6. 运行 Client。 控制台窗口中将显示 HTML。 请注意,HTML 指示用户已经过身份验证并显示 ACS 中的声明。