大家好!

今天的博文深入讨论我们今天推出的开发人员工具和框架中的一些新功能。我们通过与 ASP.NET 和 Visual Studio 团队合作开发了一些重大的增强功能,让开发人员能够轻松使用 Windows Azure Active Directory 作为其身份验证服务。

我们今天的客座博友是 Vittorio Bertocci,很多人都是通过他的许多个人演讲和网络广播认识他的。Vittorio 是 Active Directory 团队的首席项目经理,可能是我们最著名的团队成员。他和 ASP.NET 团队就此项目开展了密切合作。

此致!

Alex (Twitter @Alex_A_Simons)

---------------------------------------------------------------

大家好!

过去的几个月,我与 ASP.NET 团队密切协作,使 Windows Azure Active Directory 成为 Visual Studio 项目创建体验中的一流工具。今天, Sayed 宣布了ASP.NET and Web Tools for Visual Studio 2013 Preview 的面世,它提供了新的 ASP.NET 项目模板和工具体验,以在项目创建时集成 Windows Azure Active Directory 身份验证和管理功能。我们很高兴最终公开了新功能的预览版,以供您试用!

您可以前往 Sayed 的博客(或 预览版文档)了解全面的概述和版本说明,但简而言之:设想一下这样的功能,只需单击几下即可创建已经配置为对来自您的组织的用户进行身份验证和/或轻松吸引新组织的加入、支持分布式注销、自动刷新身份验证设置以及通过图形 API 安全查询目录的解决方案。这正是新模板为您提供的功能。

如果您有机会阅读当 Windows Azure AD 公开发布时我们发布的开发人员演练:这些新模板会创建使用 LoB 应用程序进行 Web 登录的演练中所述的相同解决方案,甚至是结合所有 Windows Azure GA 演练的解决方案。

深度示例:创建新的多租户应用程序

让我们来看一下使用新工具创建项目,以让您了解一下新功能的工作原理。让我们从头开始使用最高数量的移动部件提前解决应用程序类型 - 多租户应用程序(如此处所述)。

请注意:下面的任何信息对于使用新工具都不是必需的。我们将向已经使用 Windows Azure AD 并想要了解这些新工具与现有项目有何关联的开发人员介绍它的内部工作原理,但实际上,开发人员可能会在几乎不了解底层基础结构的情况下只完成模板向导并获取可用应用程序。

您可以参阅本博文,以了解有关如何获取该版本并在您的机器上进行安装的说明;此外,别忘了,我们仍处于预览版!

首先创建一个新项目;从左侧的项目类型列表中选择 Web。

正如您所看到的,此时有一个单一入口点:ASP.NET Web 应用程序。很简单!选择该入口点并单击“确定”。您将有机会选择要在项目中特别采用的技术。在我们的示例中,我们选择 MVC。

在下一步中,您有机会选择要在项目中特别采用的技术。在我们的示例中,我们选择 MVC。

您可能已经注意到,对话框还会通知您目前所选择的身份验证设置:默认值为 [Individual user Accounts](单个用户帐户),这与您的应用程序保持其自己的帐户数据库(尽管它仍可将凭据验证外包给外部提供程序,如 Facebook)情况对应。

我们想要更改该选项,并连接到 Windows Azure AD。单击 [Change Authentication](更改身份验证)。您将获得一个新对话框,为您提供选择不同身份验证类型(左侧),并提供控件(右侧)以输入实施您的所选设置所需的详细信息。

选择 [Organizational Accounts](组织帐户)。

UI 发生更改以帮助您选择想要创建的应用程序种类:与单个 Windows Azure AD 租户绑定的应用程序、意欲由多个 Windows Azure AD 租户使用的 SaaS 应用程序或与传统本地身份提供程序(如 ADFS2.0 实例)绑定的应用��序。

选择 [Cloud – Multiple Organizations](云 - 多个组织)。

注意:此 UI 会立即显示许多选项。预览之后,我们来看一下简化方式。您需要填写的唯一字段是 [Domain](域)一,因为 Visual Studio 必须知道应使用哪个 Windows Azure AD 租户创建应用程序项。

除默认的单一登录外,[Access Level](访问级别)组合框为您提供向您的应用程序中添加目录读取功能的机会。

如果您没有进行输入,应用程序 ID URI 将由工具自动分配。
单击此屏幕上的 [OK](确定)。

此时,工具将要求您为指定的租户输入 Windows Azure AD 凭据:需要这些凭据才能代表您访问图形,以及自动为项目筹建应用程序项。

完成后,单击 [Create project](创建项目)。

该工具将执行经典项目创建阶段:模板实例化、获取必要的 NuGet 包等。然而,它将在(通过图形 API)在 Windows Azure AD 中创建必要的项,以及将项目位自动配置为支持 Web 登录和图形调用时执行这些阶段。

让我们更加深入地看一下该工具所创建的内容。

Visual Studio 项目中包含的内容

在创建后,项目

  • 已使用 Windows Azure AD(协议和 UI 手势)配置了 Web 登录
  • 包含审核密钥刷新逻辑所有必要的自动化
  • 已经连接以支持单一注销
  • 包含用于调用图形的所有凭据和调用逻辑
  • 包含生成并处理同意消息的全面登录体验

该逻辑都位于哪里?它通过项目在适当的位置连接在一起。下面是一个快速参考图,以开始您的探索:

Windows Azure AD 中的应用程序项

这解决了 Visual Studio 项目中包含的内容问题。怎样在 Windows Azure AD 中创建项?

如果您想要前往 Windows Azure 门户并选择您的应用程序列表,您将发现已经创建新的项(与 Visual Studio 项目具有相同的名称)。

是否想要更深入地了解一下?前往 Graph Explorer,通过请求 https://graph.windows.net/<您的租户名称>/applications 登录并列出您的应用程序。搜索您的项目名称,您将看到一条与以下内容类似的项:

   {

      "odata.type": "Microsoft.WindowsAzure.ActiveDirectory.Application",

      "objectType": "Application",

      "objectId": "312176b3-d708-4a79-ad94-e16c3b690cab",

      "appId": "a9ab4c5e-b862-4c7c-ace7-4247e5d8ce4d",

      "availableToOtherTenants": true,

      "displayName": "MyMult1tenantApp",

      "errorUrl": null,

      "homepage": "https://localhost:44307/",

      "identifierUris": [

        "https://cloudidentity.net/MyMult1tenantApp"

      ],

      "keyCredentials": [],

      "mainLogo@odata.mediaContentType": "image",

      "logoutUrl": null,

      "passwordCredentials": [

        {

          "customKeyIdentifier": null,

          "endDate": "2014-06-24T06:56:05.9223695Z",

          "keyId": "0e59c955-3910-4a27-909d-81d4bf371b3c",

          "startDate": "2013-06-24T06:56:05.9223695Z",

          "value": null

        }

      ],

      "publicClient": null,

      "replyUrls": [

        "https://localhost:44307/"

      ],

      "samlMetadataUrl": null

    },

在上面的项中应注意的是:

    • AvailableToOtherTenants 位打开,因为您可能期望形成多租户应用程序
    • identifierURIs 列表包含工具自动生成的 URI,结合了租户域和项目名称
    • ReplyURL 包含开发机器上的 IIS Express 分配给应用程序的地址

假设有一个多租户应用程序在其原始租户中自动可用,我们应预期也为其找到 ServicePrincipal。而且毫无疑问,如果您前往  https://graph.windows.net/<您的租户名称>/servicePrincipals,您将发现一些具有以下效果的项:

{

      "odata.type": "Microsoft.WindowsAzure.ActiveDirectory.ServicePrincipal",

      "objectType": "ServicePrincipal",

      "objectId": "f5be2dd9-cbe4-49bb-b784-3e547ea70770",

      "accountEnabled": true,

      "appId": "a9ab4c5e-b862-4c7c-ace7-4247e5d8ce4d",

      "displayName": "MyMult1tenantApp",

      "errorUrl": null,

      "homepage": "https://localhost:44307/",

      "keyCredentials": [],

      "logoutUrl": null,

      "passwordCredentials": [],

      "publisherName": "Vittorio.Bertocci",

      "replyUrls": [

        "https://localhost:44307/"

      ],

      "samlMetadataUrl": null,

      "servicePrincipalNames": [

        "https://cloudidentity.net/MyMult1tenantApp",

        "a9ab4c5e-b862-4c7c-ace7-4247e5d8ce4d"

      ],

      "tags": []

    }

不出所料;我们真正想要从 ServicePrincipal 获得的是其对象 ID,因此我们可以验证工具实际上是否根据请求在 Directory Readers 角色中添加了应用程序:您可通过使用表格查询进行验证https://graph.windows.net/<您的租户名称>/servicePrincipals/<serviceprincipal 对象 ID>/memberOf

{

  "odata.metadata": "https://graph.windows.net/cloudidentity.net/$metadata#directoryObjects",

  "value": [

    {

      "odata.type": "Microsoft.WindowsAzure.ActiveDirectory.Role",

      "objectType": "Role",

      "objectId": "88d8e3e3-8f55-4a1e-953a-9b9898b8876b",

      "description": "Allows access to various read only tasks in the directory. ",

      "displayName": "Directory Readers",

      "isSystem": true,

      "roleDisabled": false

    }

  ]

}

毫无疑问,一切均如预期。:-)

运行项目

项目已做好在创建后立即运行的准备。在 Visual Studio 中单击 F5:您将获得以下屏幕。

除主题和很少的表面差异外,这实际上是多租户应用程序演练中描述的项目,但没有从头开始编写以及在 Windows Azure AD 门户中手动设置。您可以使用新租户注册、登录、查询图形、注销… 全部随时可用。非常得心应手

后续步骤

这只是首次发布这一新的重要功能的预览版。随着我们与 ASP.NET 团队的继续协作,我们将根据反馈调整功能并扩大范围以处理更多应用场景。

通常,您的意见和建议对于我们确定工作的优先顺序超级重要:请试用新的 ASP.NET and Web Tools for Visual Studio 2013,并与我们分享您的观点!

此致!

Vittorio

原文内容:http://blogs.technet.com/b/chinatechnet/archive/2013/10/22/web-windows-azure-active-directory-asp-net-visual-studio.aspx

Step-by-Step: Get Started with Windows Azure Active Directory - FREE for Production Use

Using Windows Azure Active Directory (WAAD): Part 1 (Setup)

MVC Sample App for Windows Azure Active Directory Graph

简化 Web 应用程序与 Windows Azure Active Directory、ASP.NET 和 Visual Studio 的集成的更多相关文章

  1. Windows Azure Active Directory (4) China Azure AD Self Password Reset

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 在开始本章内容之前,请读者熟悉笔者之前写的文档: Windows ...

  2. Windows Azure Active Directory (3) China Azure AD增加新用户

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的China Azure. 本文是对笔者之前的文档:Windows Azure Active ...

  3. [Windows Azure] What is Windows Azure Active Directory?

    What is Windows Azure Active Directory? Windows Azure Active Directory is a service that provides id ...

  4. Windows Azure Active Directory (1) 前言 - 基于声明的验证和授权

    <Windows Azure Platform 系列文章目录> 在我们介绍整套系统架构之前,我们需要首先定义一些基本的概念. 用户及其属性: 用户值得是要使用某项服务的个体.用户一般都有一 ...

  5. Windows Azure Active Directory (2) Windows Azure AD基础

    <Windows Azure Platform 系列文章目录> Windows Azure AD (WAAD)是Windows Azure提供的一个REST风格的服务,为您的云服务提供了身 ...

  6. [Windows Azure] Building the web role for the Windows Azure Email Service application - 3 of 5

    Building the web role for the Windows Azure Email Service application - 3 of 5. This is the third tu ...

  7. 使用 Azure Active Directory 管理 Azure 中的 HPC Pack 群集

    Microsoft HPC Pack 2016 支持在 Azure 中部署 HPC Pack 群集的管理员将其与 Azure Active Directory (Azure AD) 集成. 请按照本文 ...

  8. 宣布正式发布 Biz Talk Services、Azure Active Directory 和 Traffic Manager, 同时发布 Azure Active Directory 高级版预览

    除经济优势之外,云计算还在可转化为竞争优势的应用程序开发方面提供了更大的灵活性.我们很高兴看到每天创建的新 Windows Azure 订阅超过 1000 个,更令人兴奋的是,有一半客户使用价值更高的 ...

  9. 如何使用 Azure Active Directory 认证和 Microsoft Graph 构建 Blazor Web 应用

    如何使用 Azure Active Directory 认证和 Microsoft Graph 构建 Blazor Web 应用 英文原文:https://developer.microsoft.co ...

随机推荐

  1. Selenium 简单的例子

    Selenium是一个web自动化验收测试框架.   Selenium Client Driver - Selenium 2.0 Document http://seleniumhq.github.i ...

  2. SQL谜题(加减符号替代)

    问题:将以下字符串”.1.2.3.4.5.6.7.8.9 = 1“中的符号点(.)更改为符号加(+)或符号(-),有多少种方法?请用SQL解决此问题 计算过程: CREATE TABLE #(VAL ...

  3. 「理解HTTP」之常见的状态码segmentfault

    状态码的职责是当客户端向服务器端发送请求时,描述返回请求结果.借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了什么错误. RFC2616定义的状态码,由3位数字和原因短信组成.数字中的第一 ...

  4. CSS3简单的栅格系统

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 单独编译使用WebRTC的音频处理模块

    块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...

  6. Git 创建本地仓库

    前面已经搭好环境了,现在我们缺的是一个管理版本控制的仓库.这次的实验是在电脑本地创建本地仓库.指定路径 默认的位置是在你所安装Git的目录下.Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中 ...

  7. Android资源站

    用这个帖子记录下看到的好的android资源站 1.各种资源:http://appxcode.com/ 2.图标 2.1 http://www.easyicon.net 2.2 http://www. ...

  8. Windows Commands and API

    Shortcuts ... Symbolic Links https://en.wikipedia.org/wiki/NTFS_symbolic_link Hard Links https://en. ...

  9. Golang之chan/goroutine(转)

    原文地址:http://tchen.me/posts/2014-01-27-golang-chatroom.html?utm_source=tuicool&utm_medium=referra ...

  10. 怎么将java web 项目导入idea 中

    1.将 java web 项目导 入idea 中, 显示 然后进行 Configure 配置. 2. 点击 open module settings. 3. 4. 选择jar包. 5. 6. 配置to ...