真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

WindowsAzureSDK.NET開發(fā)中AzureAD如何管理用戶信息

本篇文章為大家展示了Windows Azure SDK .NET開發(fā)中Azure AD如何管理用戶信息,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比平山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式平山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋平山地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

使用Azure AD 進(jìn)行身份驗證

之所以將Azure AD 作為開始,是應(yīng)為基本上我們所有應(yīng)用都需要進(jìn)行安全管理。Azure Active Directory (Azure AD) 通過以下方式簡化了對開發(fā)人員的身份驗證:將標(biāo)識提供為一項服務(wù)、支持行業(yè)標(biāo)準(zhǔn)協(xié)議(例如 OAuth 2.0 和 OpenID Connect),并提供用于不同平臺的開源庫來幫助你快速開始編碼。

Azure Active Directory (Azure AD) 提供了一種簡便的方法,讓企業(yè)可以在云中和本地管理標(biāo)識和訪問。你的用戶可以使用相同的工作或?qū)W校帳戶,以單一登錄到任何云和本地 Web 應(yīng)用程序。你的用戶可以使用其最喜歡的設(shè)備,包括 iOS、Mac OS X、Android 和 Windows。你的組織可以使用集成的多因素身份驗證,在本地和云中保護(hù)敏感數(shù)據(jù)和應(yīng)用程序,從而確保本地和遠(yuǎn)程訪問的安全。

而且Azure Active Directory (AD) 在大多數(shù) Microsoft 云服務(wù)后面提供核心目錄和身份管理功能。這些服務(wù)包括但不限于:

  • Azure

  • Microsoft Office 365

  • Microsoft Dynamics CRM Online

  • Windows Intune

一、使用Azure AD需要了解幾個概念

(一)Azure AD目錄

當(dāng)你注冊 Microsoft 云服務(wù)時,便會獲得一個 Azure AD 目錄。你可根據(jù)需要創(chuàng)建更多的目錄。例如,可以將第一個目錄保留為生產(chǎn)目錄,然后創(chuàng)建另一個目錄進(jìn)行測試或過渡。

(二)Azure AD租戶

在啟用云的工作區(qū)中,可以將租戶定義為擁有并管理該云服務(wù)的特定實例的客戶端或組織。租戶使用 Microsoft Azure 提供的標(biāo)識平臺,它只是你的組織在注冊 Azure 或 Office 365 等 Microsoft 云服務(wù)時接收并擁有的 Azure Active Directory (Azure AD) 專用實例。每個 Azure AD 目錄都是獨特的,獨立于其他 Azure AD 目錄。就像公司辦公大樓是你的組織特有的安全資產(chǎn)一樣,根據(jù)設(shè)計,Azure AD 目錄也是僅供你的組織使用的安全資產(chǎn)。Azure AD 體系結(jié)構(gòu)隔離了客戶數(shù)據(jù)和身份信息,避免混合存放。這意味著,一個 Azure AD 目錄的用戶和管理員不可能意外或惡意性地訪問另一目錄中的數(shù)據(jù)。

我現(xiàn)在有兩個Azure AD目錄,當(dāng)然也就是有兩個Azure AD租戶。

現(xiàn)在,當(dāng)你注冊 Azure 時,將自動創(chuàng)建一個目錄,你的訂閱將與該目錄相關(guān)聯(lián)。使用 Azure AD 不收取費用。目錄是免費資源。還有一個收費的Azure Active Directory 高級版級別,它提供額外的功能,例如公司品牌和自助密碼重置。有意思的是Azure AD目錄建立完畢后是可以改名字的,所以你在初次起名字時就不必猶猶豫豫了。

二、身份驗證開發(fā)

在我們的案例中,我們是用戶通過Web應(yīng)用程序進(jìn)行身份識別。

  • Azure AD 是標(biāo)識提供程序,負(fù)責(zé)對組織的目錄中存在的用戶和應(yīng)用程序的標(biāo)識進(jìn)行驗證,并最終在那些用戶和應(yīng)用程序成功通過身份驗證時頒發(fā)安全令牌。

  • 希望將身份驗證外包給 Azure AD 的應(yīng)用程序必須在 Azure AD 中進(jìn)行注冊,Azure AD 將在目錄中注冊并唯一地標(biāo)識該應(yīng)用程序。

  • 在用戶通過身份驗證后,應(yīng)用程序必須對用戶的安全令牌進(jìn)行驗證以確保身份驗證對于目標(biāo)方是成功的。

  • 身份驗證過程的請求和響應(yīng)流是由所使用的身份驗證協(xié)議(例如 OAuth 2.0、OpenID Connect、WS-Federation 或 SAML 2.0)決定的

這章我們將簡單的對Azure AD的開發(fā)進(jìn)行入門性的嘗試,包括身份驗證登錄、基本身份信息的存儲。要完成Azure AD的應(yīng)用開發(fā)需要在Azure門戶和開發(fā)環(huán)境中各自完成一些工作。

Azure AD開發(fā)部分

首先我們需要引入以下組件庫

  • Microsoft.IdentityModel.Clients.ActiveDirectory

  • Microsoft.IdentityModel.Protocol.Extensions

  • Microsoft.Owin

  • Microsoft.Owin.Host.SystemWeb

  • Microsoft.Owin.Security

  • Microsoft.Owin.Security.Cookies

  • Microsoft.Owin.Security.OpenIdConnect

  • Microsoft.Web.Infrastructure

  • Microsoft.WindowsAzure.ConfigurationManager.

  • System.IdentityModel.Tokens.Jwt

其次我們需要在Web.config文件的appSettings節(jié)添加如下配置節(jié)點

注意,由于我們使用的是世紀(jì)互聯(lián)的版本,所以ida:AADInstance、ida:GraphUrl的Url將固定為https://login.chinacloudapi.cn/{0}和https://graph.chinacloudapi.cn。關(guān)于其他的配置值將在Azure AD門戶部分講解。

然后我們需要編寫AuthenticationHelper類來輔助我們處理有關(guān)授權(quán)的基本處理,AuthenticationHelper有兩大部分,第一部分是通過靜態(tài)字段來讀取在Web.config文件的appSettings節(jié)配置的有關(guān)Azure AD的信息。

public static readonly string Tenant = CloudConfigurationManager.GetSetting("ida:Tenant");

public static readonly string TenantId = CloudConfigurationManager.GetSetting("ida:TenantId");

public static readonly string LoginUrl = CloudConfigurationManager.GetSetting("ida:AADInstance");

public static readonly string GraphUrl = CloudConfigurationManager.GetSetting("ida:GraphUrl");

public static readonly string AppKey = CloudConfigurationManager.GetSetting("ida:AppKey");

public static readonly string AuthorityUrl = String.Format(CultureInfo.InvariantCulture, LoginUrl, TenantId);

public static readonly string AuthString = CloudConfigurationManager.GetSetting("ida:Auth") + CloudConfigurationManager.GetSetting("ida:Tenant");

public static readonly string ClaimsSchemas = "http://schemas.microsoft.com/identity/claims/objectidentifier";

public static readonly string ClientId = CloudConfigurationManager.GetSetting("ida:ClientId");

public static readonly string ClientSecret = CloudConfigurationManager.GetSetting("ida:ClientSecret");

public static readonly string PostLogoutRedirectUri = CloudConfigurationManager.GetSetting("ida:PostLogoutRedirectUri");

你已經(jīng)注意到了,上面的代碼在讀取配置的時候沒有使用我們傳統(tǒng)的WebConfigurationManager類,而是采用了Azure新加入的CloudConfigurationManager類,該類是用于訪問 Microsoft Azure 配置設(shè)置的靜態(tài)類,可以從運行應(yīng)用程序的平臺的相應(yīng)配置存儲中讀取配置設(shè)置。Microsoft Azure 外部環(huán)境中運行的 .NET 應(yīng)用程序通常在 web.config 或 app.config 文件中存儲配置設(shè)置。不管在哪個環(huán)境中運行代碼,都可以使用CloudConfigurationManager類從適當(dāng)?shù)呐渲梦募凶x取設(shè)置。

然后在AuthenticationHelper中添加一個方法AcquireTokenAsync,這個方法用于返回當(dāng)前的用戶憑證,如果沒有憑證則拋出異常。

public static string Token;

public static async Task AcquireTokenAsync()

{

if (Token == null || Token.IsEmpty())

{

throw new Exception("Authorization Required.");

}

return Token;

}

然后我們再添加GetActiveDirectoryClient方法來獲取對Azure AD的客戶端對象引用。

public static ActiveDirectoryClient GetActiveDirectoryClient()

{

Uri baseServiceUri = new Uri(GraphUrl);

ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri(baseServiceUri, TenantId), async () => await AcquireTokenAsync());

return activeDirectoryClient;

}

AuthenticationHelper到此就完成了,我們建立一個控制器AzureActiveDirectoryController,這個控制器將包含以下方法來使用AuthenticationHelper類。

SignIn

SignOut

SignIn登錄

代碼非常簡單,在當(dāng)前上下文的采用OpenID進(jìn)行身份詢問獲取

public void SignIn()

{

if (!Request.IsAuthenticated)

{

HttpContext.GetOwinContext()

.Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" },

OpenIdConnectAuthenticationDefaults.AuthenticationType);

}

}

SignOut登出

同樣代碼簡單明確vm

public void SignOut()

{

string userObjectID = ClaimsPrincipal.Current.FindFirst(AuthenticationHelper.ClaimsSchemas).Value;

var authContext = new AuthenticationContext(AuthenticationHelper.AuthorityUrl, new NaiveSessionCache(userObjectID));

authContext.TokenCache.Clear();

AuthenticationHelper.Token = null;

HttpContext.GetOwinContext().Authentication.SignOut(OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);

}

好了,現(xiàn)在登入登出的代碼已經(jīng)完成了,我們可以嘗試下載我們的MVC Web APP中執(zhí)行體驗下。在MVC自己建立的架構(gòu)中我們可以循著View\ Shared\ _LoginPartial.cshtml找到通用的登入登出的View界面,然后修改代碼為

@if (Request.IsAuthenticated)

{

< text>

< ul class="nav navbar-nav navbar-right">

< li class="navbar-text">

Hello, @User.Identity.Name!

< li>

@Html.ActionLink("Sign out", "SignOut", "AzureActiveDirectory")

< /li>

< /ul>

< /text>

}

else

{

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部