Azure - 實作Azure上的AD與MVC進行驗證 - Azure設定篇 ( 二 )

02 September 2014 — Written by Sky Chang
#Active Directory#ASP.NET 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成這樣。

image

接下來,我們要設定驗證區段,這邊,不管哪個目錄,反正要看到網站內容,就要先登入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。

image[53]

最後,我們還有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開啟喔!!~

image

納因為這邊給的PORT是44303,所以我們還要回到Azure那邊去改一下資料。

image

到這邊為止,我們算是設定好了…接下來要開始用一些Code…

參考資料

Sky & Study4.TW