大家好!

今天的博文深入讨论我们今天推出的开发人员工具和框架中的一些新功能。我们通过与 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. js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入

    设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Githubhotkeys预览 创建 您将需要在您的系 ...

  2. Swift 圆角设置

    故事面板中设置圆角(storyboard) Key Path layer.borderWidth(边框宽度) layer.cornerRadius(圆角弧度) layer.borderColor(边框 ...

  3. 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)

    Python的socket高级应用(多进程,协程与异步)

  4. Git 简介

    版本控制 什么是版本控制? 我需要版本控制吗? - 如果你还没使用过版本控制系统,或许你会有以上疑问,甚至更多疑问.希望后面的回答能让你喜欢上版本控制系统,喜欢上Git. 什么是版本控制:顾名思义,版 ...

  5. 在iIBatis中使用MySql中出现的配置问题

    1.首先需要下载mySQL-connector-net的安装包.可以通过下面两种方式,第一种是需要安装的,第二种是直接可以下载使用的. 第一种: http://dev.mysql.com/downlo ...

  6. 同一台电脑上多个myeclipse破解的问题

    因为项目版本的问题,电脑上不得装了个myeclipe10版本的,但是破解之后,原来电脑上的myeclipse2014却显 示没有激活,好吧,我又去把myeclipse2014重新激活了一遍,但是到了m ...

  7. 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言

    在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...

  8. Ice-E(Embedded Internet Communications Engine)移植到s3c2440A(arm9)linux(2.6.12)上的

    2009-03-26 18:31:31 原文链接 1.前言 ICE-E是ICE在嵌入式上运行的一个版本,与ICE比较如下: Category Ice 3.3.0 Ice-E 1.3.0 Thread ...

  9. BestCoder#49

    Untitled Accepts: 504 Submissions: 1542 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/6 ...

  10. kindeditor-4.1.3工具使用技巧:如何在编辑区上传图片并保存绝对路径

    MVC项目开中用到了KindEditor图片上传工具,需要在编辑区内上传图片,并将图片的URL保存为符合如下格式地址,如http://192.168.0.111/uploadImg/imgName.j ...