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…