大家好!
今天的博文深入討論我們今天推出的開發人員工具和框架中的一些新功能。我們通過與 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
Step-by-Step: Get Started with Windows Azure Active Directory - FREE for Production Use
文章列表