The Microsoft
Conference 2014
25
Azure Active Directory (AD) Premium
で複数のクラウドと社内の ID を統合
• EMS は Azure AD Premium を包含
• Office 365 などの SaaS アプリや社内アプリを
シングルサインオンで利用可能
BitLocker でサーバーやクライアント
のディスクを保護
OS がインストールされたドライブ、固定ドラ
イブ、リムーバブル ドライブを暗号化で保護
改善のための要件: ソリューション
Office 365 など
他社クラウド
SaaS アプリ
社内アプリ
シングルサインオンで
利用可能
ディスク全体または
使用領域のみを暗号化して保護
PC やディスクの紛失、
盗難時に機密を維持
Agenda
イントロダクション
エンタープライズ
IT
の変化とユーザー認証のトレンド
AAD
を利用した安全なユーザー認証
社内
AD
と
AAD
のアカウント同期
AAD
を利用したユーザー認証
多要素認証の追加
まとめ
Appendix
The Microsoft
Conference 2014
エンタープライズ
IT
環境の拡大
PC
イントラネット
オンプレミス
タブレット
スマートフォン
インターネット
クラウド
SaaS
型サービス
パスワード管理の問題
クラウド上の
システム
SaaS
型
サービス
インターネット
ユーザー認証
は大丈夫?
イントラネットは良かった・・・
Active Directory
内部設置型の
システム
イントラネット
内部設置型の
システム
内部設置型の
システム
その頃
フェデレーション認証で楽ちん
マイクロソフト
ID
(認証処理を委譲)
OneDrive
Outlook.com
Skype
ユーザーID
/パスワード
セキュリティ
トークン
②
①
トークンを
要求
③
セキュリティ
トークン
④
セキュリティ
トークン
セキュリティ
トークン
多要素認証で安心
システム
12:38ワンタイム
トークン
ユーザー
ID
パスワード
ワンタイム
トークン
ユーザー
ID
&
パスワード
②
①
③
ワンタイムパスワード
+
エンタープライズなら
AAD
Active Directory
内部設置型の
システム
クラウド上の
システム
SaaS
型
サービス
イントラネット
インターネット
Azure
Active
Directory
同
期
The Microsoft
Conference 2014
Azure Active Directory
Active Directory
とのアカウント同期
クラウドアプリも社内アカウントで利用可能
多要素認証によるセキュリティの強化
パスワードが覚えきれない!
Active Directory
内部設置型の
システム
クラウド上の
システム
SaaS
型
サービス
イントラネット
インターネット
アカウント
データベース
アカウント
データベース
パスワード
パスワード
パスワード
パスワード
パスワード
パスワード パスワード
パスワード
AAD
へのアカウント同期
Active Directory
内部設置型の
システム
クラウド上の
システム
SaaS
型
サービス
Azure
Active
Directory
同
期
イントラネット
インターネット
パスワード
アカウント同期の構成
AAD
ディレクトリ
の作成
カスタム
ドメインの
指定
AAD Sync
or
DirSync
を実行
IT
管理者
The Microsoft
Conference 2014
DEMO
アプリ個別の作りこみは面倒で危険
Active Directory
内部設置型の
システム
クラウド上の
システム
SaaS
型
サービス
イントラネット
インターネット
アカウント
データベース
アカウント
データベース
標準プロトコルによる認証連携
Active Directory
内部設置型の
システム
クラウド上の
システム
SaaS
型
サービス
Azure
Active
Directory
同
期
イントラネット
インターネット
Web
アプリへの組込み
Windows Identity
Foundation
による
組込み
ASP.NET Identity
による組込み
or
Azure Active Directory
にアプリを登録
AAD
へアプリを登録
アプリの名前
サインオン
URL
ASP.NET Web
アプリへの組込み
OpenID Connect
WS-Federation
ASP.NET Identity
[ assembly: OwinStartup ( typeof ( Samples.Startup1 ) ) ]
public class Startup1 {
public void Configuration ( IAppBuilder app ) {
// コードで組み込む
}
}
Windows Identity Foundation
<configuration>
<system.identityModel>
<!-- 構成ファイルで組み込む -->
</system.identityModel>
</configuration>
AAD
サインインが要求される
リダイレクト
The Microsoft
Conference 2014
DEMO
SaaS
型サービスの登録
Azure Active Directory
にアプリを登録
ユーザ権限の
割り当て
The Microsoft
Conference 2014
DEMO
テキストパスワードは危険!
Active Directory
内部設置型の
システム
クラウド上の
システム
SaaS
型
サービス
Azure
Active
Directory
同
期
イントラネット
インターネット
あぶない!
多要素認証による強化
Active Directory
内部設置型の
システム
クラウド上の
システム
SaaS
型
サービス
Azure
Active
Directory
同
期
イントラネット
インターネット
パスワード
デバイス
多要素認証の構成
IT
管理者
開発者
ユーザー
多要素認証
の有効化
追加情報を
登録
ユーザーが追加情報を登録
スマホアプリ
音声メッセージ
(電話)
テキストメッセージ
(SMS)
http://aka.ms/MFASetup
以降は多要素認証が要求される
まずはユーザー
ID
と
パスワードでサインイン
ワンタイムパスワードも
必要になる
The Microsoft
Conference 2014
DEMO
まとめ
慣れ親しんだアカウントが
外でも使えます
ユーザー
開発者
IT
管理者
面倒な認証機構はお任せです
従来同様の
ID
管理・運用と
多要素認証による強化
リファレンス
MSDN
http://msdn.microsoft.com/library/azure/jj673460.aspx
TechNet
http://technet.microsoft.com/ja-jp/library/hh967619.aspx
Cloud Identity (Blog)
関連セッション
MN-242
Dynamic Identity Framework
~ クラウド時代適応のための
ID
管理手法 ~
MN-271
多要素認証
Deep Dive
~ ハイブリット認証基盤だからこそ実現できる
柔軟で高機能な多要素認証 ~
もしかして・・・
Office 365
をご利用いただいていますか
?
既に
Azure Active Directory
のユーザーです
The Microsoft
Conference 2014
WS-Federation
サンプルコード
public static void
ConfigureWsFederation(
IAppBuilder
app)
{
// 認証の種類を設定
app.SetDefaultSignInAsAuthenticationType(
WsFederationAuthenticationDefaults
.AuthenticationType);
// クッキー認証を有効化
app.UseCookieAuthentication(
new
CookieAuthenticationOptions
()
{
AuthenticationType =
WsFederationAuthenticationDefaults
.AuthenticationType
});
// WS-Federation の組込み
app.UseWsFederationAuthentication(
new
WsFederationAuthenticationOptions
()
{
Wtrealm =
"http://appid.azlab01.asia/MSC2014.Demo.Web.Mvc"
,
MetadataAddress =
"https://login.windows.net/azlab01.asia/"
+
"federationmetadata/2007-06/federationmetadata.xml"
});
}
アプリケーション ID を指定
テナント名部分は適宜変更
OpenID Connect
サンプルコード
public static void
ConfigureOpenIdConnect(
IAppBuilder
app)
{
// 認証の種類を設定
app.SetDefaultSignInAsAuthenticationType(
OpenIdConnectAuthenticationDefaults
.AuthenticationType);
// クッキー認証を有効化
app.UseCookieAuthentication(
new
CookieAuthenticationOptions
()
{
AuthenticationType =
OpenIdConnectAuthenticationDefaults
.AuthenticationType
});
// OpenID Connect の組込み
app.UseOpenIdConnectAuthentication(
new
OpenIdConnectAuthenticationOptions
()
{
ClientId =
"f4b98e1d-7b5d-47d3-85fe-bb17cef425a4"
,
Authority =
"https://login.windows.net/azlab01.asia/"
});
}
テナント名部分は適宜変更
クライアント ID を指定
(登録したアプリの構成タブから取得)
WS-Federation
構成サンプル
<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> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> <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>
WIF
の有効化
認証されてないユーザーを拒否
WS-Federation および セッ
ション認証モジュールを追加
WS-Federation
構成サンプル
<system.identityModel> <identityConfiguration>
<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>
<issuerNameRegistry type="AADStudy.WebForms.Utils.DatabaseIssuerNameRegistry, AADStudy.WebForms" /> <audienceUris>
<add value="https://appid.azlab01.asia/MSC2014.Demo.Web.Mvc" /> </audienceUris>
<certificateValidation certificateValidationMode="None" /> </identityConfiguration>
</system.identityModel>
<system.identityModel.services> <federationConfiguration>
<cookieHandler requireSsl="true" />
<wsFederation passiveRedirectEnabled="true"
issuer="https://login.windows.net/azlab01.asia/wsfed" realm="https://appid.azlab01.asia/MSC2014.Demo.Web.Mvc" requireHttps="true" /> </federationConfiguration> </system.identityModel.services>
認証クッキーの暗号化
方式を指定
アプリ
ID
ログイン URL 等のメタデー
タを取得する URL
アプリ
ID
マルチフォレスト統合(
AAD Sync
)
AD DS
AD DS
①
AD DS
②
AD DS
③
AAD
AAD
AAD Sync
DirSync
1:1
構成
N:1
構成
シングルサインオン(
AAD + ADFS
)
AAD
AD FS
AD DS
WAP
クラウド上の
Web
システム
信頼
関係
社内設置型の
Web システム
イントラネット
インターネット
要パスワード
+多要素認証
D
irS
yn
c /
A
AD
Sy
nc
パスワード
入力不要(
SSO
)
ネイティブアプリ認証 (
OAuth 2.0
)
ネイティブアプリ
ADAL
Web サービス
(ASP.NET Web API 等)
Azure Active Directory
認証ダイアログ
O
Au
th
2.0
ネイティブアプリの登録
ネイティブアプリ認証サンプル
public static void
ConfigureOAuth2(
IAppBuilder
app)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new
WindowsAzureActiveDirectoryBearerAuthenticationOptions
()
{
Audience =
"http://appid.azlab01.asia/MSC2014.Demo.Web.Api"
,
Tennant =
“azlab01.asia"
});
}
public async void
Run()
{
var
acx =
new
AuthenticationContext
(
"https://login.windows.net/azlab01.asia"
);
var
token =
await
acx.AcquireTokenAsync(
"http://appid.azlab01.asia/MSC2014.Demo.Web.Api"
,
"d8fed4c3-73a7-44a7-af82-65c7983d245a"
,
new
Uri
(
"https://localhost:44302/redirecturi"
));
var
client =
new
HttpClient
();
client.DefaultRequestHeaders.Authorization =
new
AuthenticationHeaderValue
(
"Bearer"
, token.AccessToken);
client.BaseAddress =
new
Uri
(
"https://localhost:44302/api/"
);
var
response =
await
client.GetAsync(
"HelloWorld"
);
API 側の認証設定
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.