Azure - 實作Azure上的AD與MVC進行驗證 - Azure設定篇 ( 二 )
繼上一篇的文章到現在,大概也整整過了4個月了,終於有時間繼續把這篇補完…上一篇完成了基本的Nuget套件設定、DLL參考、還有Azure的設定,而這篇,我們就著重在Web.config上吧。
首先,我們要在Web.config裡面的configuration底下,加入configSections區段…
<configuration>
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
接下來,我們要在appSettings底下,加入以下資訊,比較需要注意的是,ida:Realm和ida:AudienceUri,後面的value值就是我們前一篇的輸入的應用程式識別碼URL,而ida:ClientID和ida : Password就是我們前一篇要大家記的ID和PW喔!~
<add key="ida:FederationMetadataLocation" value="https://login.windows.net/study4.tw/FederationMetadata/2007-06/FederationMetadata.xml" /> <add key="ida:Realm" value="https://study4.tw/TestAD" /> <add key="ida:AudienceUri" value="https://study4.tw/TestAD" /> <add key="ida:ClientID" value="dce9aa7d-adf3-42dc-ac5e-d5043047adec" /> <add key="ida:Password" value="41O94SwvthtAs99tQIWpHhdRkXBQNjPax0fQ9orOcXc=" />
所以完成的會如下。
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="ida:FederationMetadataLocation" value="https://login.windows.net/study4.tw/FederationMetadata/2007-06/FederationMetadata.xml" />
<add key="ida:Realm" value="https://study4.tw/TestAD" />
<add key="ida:AudienceUri" value="https://study4.tw/TestAD" />
<add key="ida:ClientID" value="dce9aa7d-adf3-42dc-ac5e-d5043047adec" />
<add key="ida:Password" value="41O94SwvthtAs99tQIWpHhdRkXBQNjPax0fQ9orOcXc=" />
</appSettings>
下圖是另外一個範例,用的是Study4IdentityForAD,所以會Key成這樣。
接下來,我們要設定驗證區段,這邊,不管哪個目錄,反正要看到網站內容,就要先登入AD…
<location path="Account">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
然後system.web底下要改成如下。
<system.web>
<authentication mode="None" />
<authorization>
<deny users="?" />
</authorization>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
最後,我們要在加上底下的區段,畢竟Web.config一開始有設這個區段阿,所以我們還是要把這個區段補上,這個區段只要在設定identityModel的相關資訊,而這邊比較需要注意的是issuerNameRegistry這邊,後面的type要輸入的是專案名稱加上Utils.DatabaseIssuerNameRegistry,而後面的逗點之後,也要輸入專案的名稱;所以以這邊為案例,就是要輸入WebApplication2.Utils.DatabaseIssuerNameRegistry,WebApplication2。
<system.identityModel>
<identityConfiguration>
<issuerNameRegistry type="WebApplication2.Utils.DatabaseIssuerNameRegistry, WebApplication2" />
<audienceUris>
<add value="https://study4.tw/TestAD" />
</audienceUris>
<securityTokenHandlers>
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
<certificateValidation certificateValidationMode="None" />
</identityConfiguration>
</system.identityModel>
如下圖,用的是Study4IdentityForAD,所以要輸入Study4IdentityForAD。
最後,我們還有system.webServer這個區段要設定,一樣wsFederation裡面,需要設定應用程式識別碼URL。
<system.webServer>
<modules>
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>
</system.webServer>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="true" />
<wsFederation passiveRedirectEnabled="true" issuer="https://login.windows.net/study4.tw/wsfed" realm="https://study4.tw/TestAD" requireHttps="true" />
</federationConfiguration>
</system.identityModel.services>
最後,因為我們這個專案主要是使用SSL,所以別忘了把SSL開啟喔!!~
納因為這邊給的PORT是44303,所以我們還要回到Azure那邊去改一下資料。
到這邊為止,我們算是設定好了…接下來要開始用一些Code…