SlideShare a Scribd company logo
1 of 39
開発者のための
アイデンティティ・テクノロジー
~ Windows Phone と 認証/認可 技術

日本マイクロソフト株式会社
エバンジェリスト

安納 順一(あんのう じゅんいち)
blogs.technet.com/junichia
@junichia
本日のテーマ
1. IdP の役割
2. IdP とプロトコル
     •    SAML 2.0
     •    OAuth 2.0
3.       IdP にアクセスするには
     •    Active Directory
     •    Windows Live
     •    Facebook
     •    Windows Azure AppFabric ACS


                                        2
IdP の役割


          3
認証と認可

  認証:本人であることを確認
  認可:アクセス権を与えること



         認証         認可

     どんなシステムにも「認証」と「認可」はつきまとう
 「認可」に関するプロトコルが注目を浴びている

                                4
登場人物と課題
                                 ID   パスワード
                                      氏名
          利用者                         所属 など

                  ① 本人確認(認証依頼)
このアプリは              ② 資格情報
使いたいけど、                                IdP
個人情報を渡
して大丈夫?                  自分のもの
           ③
           利
           用



                ④アクセス                  サービス

          アプ
          リ         この資格情報や個人情報は
                 「この資格情報は正しいのだろうか?」
                     正しいのだろうか?

                                              5
課題を解決するには認可の仕組みが必要
                                 ID   パスワード
                                      氏名
          利用者                         所属 など

                  ① 本人確認(認証依頼)
このアプリは              ② 資格情報
使いたいけど、                                IdP
個人情報を渡
して大丈夫?                  自分のもの
           ③
           利
           用



                ④アクセス                  サービス
                   アプリの利用を認可
          アプ
          リ         この資格情報や個人情報は
                 「この資格情報は正しいのだろうか?」
                     正しいのだろうか?

                                              6
2つの課題と解決方法
  個人情報へのアクセスを認可

  認可のプロセスに以下の要素を組み込む(プロトコル化する)
  • 誰が    (例)本人
  • いつ    (例)アプリがアクセスするとき
  • どのように (例)画面にアラートが表示され、Y/N を選択


     アプリの利用を認可

  • IdP から発行された資格情報を提示する(Kerberos)。
  • IdP によって署名されたセキュリティトークンを提示する(SAML、
    WS-*、OAuth など)。



                                         7
セキュリティトークン(アサーション)
 • 認証の結果、IdP によって生成、発行される
 • ユーザーの各種属性を含めることができる
   ※セキュリティトークン=個人情報
 • 認可のレベル(権限の強さ、ロール)を明確にできる
 • 署名によって正当性が担保されている
           セキュリティトークン/アサーション




                               8
アプリ/サービスが利用を認可するまでの流れ(例1)


                          信頼
  利用者
                                              IdP
        アプリ
                     ① UserID/Password              ② 認証
                                         個人
                 ③ セキュリティトークン
                                         情報

              ④ 認可




                                                           9
アプリ/サービスが利用を認可するまでの流れ(例2)


  利用者
                                                 IdP
        アプリ
                        ① UserID/Password               ② 認証
                                            個人
                 ③ セキュリティトークン
                                            情報

              ④リダイレクト
                                        ⑥ 認可       信頼
                    ⑤ セキュリティトークン


                                                 サービス

                                                               10
IdP の役割 と サービスの役割
 IdP の役割
 • ユーザーの身元を保証しセキュリティトークンを発行する

 サービス/アプリの役割
 • セキュリティトークンを受け取り解析する
 • セキュリティトークンに含まれた個人情報を利用する
 • ユーザーのロールを決定する


              残された課題
   「セキュリティトークンを発行してもよいかどうかの判断」




                                 11
IdP とプロトコル


             12
「認可」が重要視されるシチュエーション
                                  プロトコル
    システム間の連携
        企業間
        企業内                      SAML
                                  /WS-*
    クラウドへの移行
        社内 IdP の利用       企業システ
                          ム
        ソーシャルな IdP の利用     SNS


    ソーシャルアプリの台頭                  OAuth
        個人情報保護のセルフサービス化

                                          13
企業内システムとソーシャルアプリの違い

• 企業内システム
   • 「システム(アプリ):人」の「信頼」が担保されている

• SNS および ソーシャルアプリ
   • いかなる「信頼」も担保されていない
      • 特に「人」と「アプリ」の信頼関係は深刻


      個人情報をアプリに提供するかどうか
              ||
   アプリにセキュリティトークンを発行するかどうか



                                  14
OAuth と WS-*/SAML の違い
• いずれも認可をするためのプロトコル
• WS-*/SAML :「情報の送出」を「セキュリティポリシー」が認可する
• OAuth :「『情報にアクセスするAPI』へのアクセス」を「利用者が」認可する

                  セキュリティポリシー
                         事前に
                         環境設定
               SAML   認            IdP
                      可

                 要求「情報が欲しい!」
               応答「氏名、メアド...」
    アプリケーション           認          ユーザーの情報
                       可   その都度
               OAuth

                 利用者(情報の持ち主)
                                             15
Facebook(OAuth 2.0)の場合
       利用者                        IdP
               利用している
               自分のもの


                                        サービスに保存され
                                         ている個人情報




                         個人情報に
                        アクセスしたい
              FBにアクセ
              スするアプ
              リ
                                                    16
“API へのアクセスを認可する” とは?
 外部のアプリケーションに対し、
 各種情報にアクセスするためのAPIの利用を認可する仕組み
     Identity&Service Provider
    (Twitter/Facebook/Google 等)
       ユーザー情報
     各種特権(例)
        氏名を閲覧
                                  API Lv1
    メールアドレスを閲覧
       投稿を閲覧
                                  API Lv2   ③ APIにアクセス   アプリ
                                  API Lv3
      つながりを閲覧
        近況を投稿                     API Lv4
      つながりを編集
                                             属性の主体
                                             (持ち主)
                                                               17
Facebook(OAuth 2.0 デスクトップアプリ)の場合

       利用者                  アプリケーション                      Facebook

          アプリ利用開始


             認証/認可画面へRedirect



                                        認証/認可 画面表示
         認証/認可を完了

         CallBack url にRedirect         認可コードを発行

                                        Access Token 要求

                                  Access Token 発行

                                         API 呼び出し
                                                                     API
                                                                           18
Windows Phone アプリへ
の実装


                     19
Windows Phone と IdP
               ライブラリ                         プロトコル                    Identity Provider
          SL.IdentityModel                   WS-Trust(SAMLトーク
      Identity Developer Training kit        ン)                         AD FS   AD DS

              Live SDK 5.0                   OAuth 2.0(draft 16)
               Download Center
                                                                         Windows Live

           Facebook C# SDK                   OAuth 2.0(draft 10)
                                                                           Facebook
                  Codeplex
                                                           Windows
       SL.Phone.Federation                   OAuth Wrap     Azure
       Windows Azure Platform Training Kit                AppFabric
                                                                            Google
                                                             ACS
                                                                          OpenID 系
                                      検      OAuth 1.0a
                  HigLabo             証                                    Twitter
                   Codeplex
                                      中                                                 20
Windows Phone と Active Directory
• System.DirectoryServce がサポートされていない
   – Active Directory に直接アクセスできない
   – 何らかのサービスを介して認証の代行を依頼する必要がある


                                           AD DS
                        認証


                  利用                  認証

                                   認証代行
                                   サービス


                                                   21
Windows Phone と Active Directory Federation Service

               WS-Trust(SOAP)      AD FS           AD DS
              ① UserID/Password             ② 認証

            ⑤ セキュリティトークン                   ③ 属性

                                  ④ 属性に署名


① AD FS にはドメインのユーザーIDとパスワードを渡す(もちろん SSL)
② AD 認証は AD FS が代行
③ AD DS からユーザーの属性が返される(どんな属性を返すかはAD FSに定義されている)
④ AD FS は「属性(クレーム)」に署名をしてセキュリティートークン(SAML アサーション)
  を生成
⑤ WP アプリにはセキュリティトークンが返される

                                                           22
Windows Phone から AD FS を利用するには
          SL.IdentityModel ライブラリ
          •   Identity Developer Training Kit 2010 April に含まれている
              http://www.microsoft.com/download/en/details.aspx?id=14347
          •   PC 用 Silverlight 版なので移植が必要
               Claims                          ProtocolsWSTrust
               ├ Claim.cs                       ├ IRequestCredentials.cs
               ├ ClaimCollection.cs             ├ IssueCompletedEventArgs.cs
               ├ ClaimsIdentity.cs              ├ IssuedTokenHeader.cs
               ├ ClaimsPrincipal.cs             ├ IWSTrustContract.cs
               ├ ClaimType.cs                   ├ RequestedSecurityToken.cs
               ├ IClaimsIdentity.cs             ├ RequestSecurityToken.cs
               └ IClaimsPrincipal.cs            ├ RequestSecurityTokenResponse.cs
                                                ├ UsernameCredentials.cs
               Services                        ├ WindowsCredentials.cs
               └ TokenCache.cs                  ├ WSTrust13Constants.cs
                                                ├ WSTrust13ResponseSerializer.cs
                                                ├ WSTrustBinding.cs
                                                ├ WSTrustBindingUsernameMixed.cs
                                                ├ WSTrustBindingWindows.cs
                                                ├ WSTrustClient.cs
                                                ├ WSTrustRequestBodyWriter.cs
                                                └ WSTrustSerializationHelper.cs
                                                                                    23
SL.IdentityModel ライブラリの移植手順
1. プロジェクトを作成
    • テンプレート
      :Windows Phone クラスライブラリ(Visual C#)
    • 名前
      :(例)WP.IdentityModel とか

2. 参照設定の追加
    • System.Runtime.Serialization
    • System.ServiceModel
    • System.Xml.Linq

3. SL.IdentityModel から ソースをひたすらコピペ

 移行したライブラリはこちらにあります
 http://blogs.technet.com/b/junichia/p/wp7_and_ad.aspx
                                                         24
SL.IdentityModel を使用したアプリの作成
1. 必要情報の収集
     AD FS のエンドポイント
       https://<ADFSサーバー>/adfs/services/trust/13/usernamemixed
     スコープ(ApplyTo、業務アプリの識別名)
       (例)https://www.contoso.com/

2. 参照設定の追加
    • 移植したライブラリのプロジェクトを選択




3. using の追加
    • using SL.IdentityModel.Claims;
    • using SL.IdentityModel.Protocols.WSTrust;
    • using SL.IdentityModel.Services;
                                                                 25
4. 認証&セキュリティトークンの取得
WSTrustClient _client;

private void _btnLogin_Click(object sender, RoutedEventArgs e)
     { RequestST(); }

private void RequestST()
     {

         _client = new WSTrustClient(                             WS-Trustクライアントを作成
           new WSTrustBindingUsernameMixed(),
           new EndpointAddress("https://tfadfs.tf.com/adfs/services/trust/13/usernamemixed"),
           new UsernameCredentials(<             >, <          >));

         var rst = new RequestSecurityToken(WSTrust13Constants.KeyTypes.Bearer)
         {
              AppliesTo = new EndpointAddress("https://www.contoso.com/")
          };
         _client.IssueCompleted += client_IssueCompleted;
         _client.IssueAsync(rst);                         セキュリティトークンを非同期で要求
     }                     非同期で実行
                                                                                                26
void client_IssueCompleted(object sender, IssueCompletedEventArgs e)
    {
        _client.IssueCompleted -= client_IssueCompleted;

        if (e.Error == null)
        {
           Globals.RSTR = e.Result;
           MessageBox.Show( e.Result );
        }
        else
        {
            MessageBox.Show(e.Error.Message);
            _btnLogin.IsEnabled = true;
        }
    }



                                                                       27
セキュリティトークン(SAML アサーション)
<saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="_b6d37acb-381c-4160-a712-d3eceee44ef5"
Issuer="http://tfadfs.tf.com/adfs/services/trust" IssueInstant="2011-11-28T00:16:18.445Z"
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
<saml:Conditions NotBefore="2011-11-28T00:16:18.445Z" NotOnOrAfter="2011-11-28T01:16:18.445Z“>
<saml:AudienceRestrictionCondition>
<saml:Audience>https://www.contoso.com/</saml:Audience>
</saml:AudienceRestrictionCondition></saml:Conditions>
<saml:AttributeStatement>
<saml:Subject><saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod></saml:SubjectConfirmation></saml:Subj
ect>
<saml:Attribute AttributeName="name" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">
<saml:AttributeValue>西城秀樹</saml:AttributeValue></saml:Attribute>
<saml:Attribute AttributeName="emailaddress" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">
<saml:AttributeValue>administrator@tf.com</saml:AttributeValue></saml:Attribute>
<saml:Attribute AttributeName="companyname" AttributeNamespace="http://schemas.tf.com">
<saml:AttributeValue>マイクロソフト</saml:AttributeValue></saml:Attribute>
<saml:Attribute AttributeName="department"AttributeNamespace="http://shcemas.tf.com">
<saml:AttributeValue>エバンジェリズムグループ</saml:AttributeValue></saml:Attribute></saml:AttributeStatement>
<saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password" AuthenticationInstant="2011-11-
28T00:16:18.023Z">
<saml:Subject><saml:SubjectConfirmation><saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMetho
d></saml:SubjectConfirmation></saml:Subject></saml:AuthenticationStatement>




                                                                                                                                 28
つづき
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference URI="#_b6d37acb-381c-4160-a712-d3eceee44ef5">
<ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>mT+IdNIJq6No0jKKX034keFNO+0HZ3dIbnOrDnzfnI4=</ds:DigestValue></ds:Reference></ds:SignedInfo>
<ds:SignatureValue>fQ/ju362tt3EGKAMOtlfFwNAa7+dZoLftbNv1wyFjkytnPaD/BlxASXkDf2KeyBG8lxIpPDBTJFczME8A3gpHKBLuFIlURldx4V5ZuVkxz
ltLqjInHs/ectAzbagSHhDVYlRuo3F8zGoV2YFH4ZHme1snqPk0ArB60W5vh8jnAvmN7VsMovmmwPupMc5d4WLeXKH7/2Piz8Q2gM2sQb818lPhYzP9V80gJPPyDX
6gbbn+QUjcnITv8nohZOutophufy54498Ul6EnBfFuEUToaZZCVfh6O5NaO/gXHp4XvNgWkRNbNM1IVYBHiOrQyTPrVrccLpYKMxed1j3yJS/Nw==</ds:Signatu
reValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>MIIC1jCCAb6gAwIBAgIQX4B1j9QgNZ9GI3IsMJ/+vTANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDExxBREZTIFNpZ25pbmcgLSB0ZmFkZnMu
dGYuY29tMB4XDTExMDQxNTA1NDIwM1oXDTEyMDQxNDA1NDIwM1owJzElMCMGA1UEAxMcQURGUyBTaWduaW5nIC0gdGZhZGZzLnRmLmNvbTCCASIwDQYJKoZIhvcNA
QEBBQADggEPADCCAQoCggEBALcp//XyPz6m9F5ok4ebtuz7XsIdesuvlze5OgN2FD4PkAykETXHRgeheAq1TtbTN/nIiTy11kKgEAseyUSfvMGJarf49vui+zNcy3
7t+tbrBGdx+MRhuncTb7+O8FKJ3Wg/q9h8e10hq3VeEoxhzd4Ghdl1R4DfJYf10PztfFeQPvoD3FJNgca7v1BB1gRtUEEykmJvSoZFt18mhk1l+9Bsk5SJyEZaZc4
M99ubqriVzzgDMZBa02+9Y6nmyy0P+sNrPnMSg031IulcGH+Zp8/W2B2ojHx3HisNkhYc8cQPYtLVoYanZ/qLG6hdqphM5TFi67QubdqclAE7MAoOx50CAwEAATAN
BgkqhkiG9w0BAQsFAAOCAQEAsU3E1uCieRjMAeVel29h9/oHLXy8hoGiy7iG3cgQBysA3Mlm3BjrLII4ze2JEZ74U8t5dk4K3K04emDuy4JhKpOP/iZXRN56UEuhI
idFfsHi/k9PLXPEgG1AJnueK52u71xj8noyPJ1EsYwVWTqm5emN5CVDEpJtPFJmsdrBviChFaOO9XURrz2rcp+TAt56cDJKFqj39aKv5YAYWBiSj0UP5cSnXxI7F3
lk7kNS19L2HdhPliXFoXI+doQ6ynOJrVUSqVMIbww7nOehWxI6TyWo9+A6TTl3LmpdNYyFYXJFjNI0JMKBm1U6yEvXEApI15LQ8IfJtSjPHoIPBHfSig==</X509C
ertificate>
</X509Data>
</KeyInfo>
</ds:Signature>
</saml:Assertion>

                                                                                                                                29
5. クレームの抽出
var sb = new StringBuilder(128);
IClaimsPrincipal n = TokenHandler.Convert(Globals.RSTR);
n.ClaimsIdentity.Claims.ToList().ForEach(vc => sb.AppendFormat("{0}n {1}nn", vc.ClaimType, vc.Value));
MessageBox.Show(sb.ToString());

public static class TokenHandler
{
     private static XNamespace ASSERTION_NAMESPACE = "urn:oasis:names:tc:SAML:1.0:assertion";
     private const string CLAIM_VALUE_TYPE = "http://www.w3.org/2001/XMLSchema#string"; // bit of a hack

    public static IClaimsPrincipal Convert(RequestSecurityTokenResponse rstr)
    {
      return new ClaimsPrincipal( GetClaimsIdentity( rstr ) );
    }

    private static ClaimsIdentity GetClaimsIdentity(RequestSecurityTokenResponse rstr)
    {
                     (この部分は次ページを参照してください)
     }

}
                                                                                                            30
private static ClaimsIdentity GetClaimsIdentity( RequestSecurityTokenResponse rstr )
      {
        XDocument responseDoc = XDocument.Parse(rstr.RequestedSecurityToken.RawToken);
        XElement attStatement = responseDoc.Element(ASSERTION_NAMESPACE +
"Assertion").Element(ASSERTION_NAMESPACE + "AttributeStatement");

        var issuer = responseDoc.Root.Attribute("Issuer").Value;
        ClaimCollection claims = new ClaimCollection();

        foreach (var c in attStatement.Elements(ASSERTION_NAMESPACE + "Attribute"))
        {
           string attrName = c.Attribute("AttributeName").Value;
           string attrNamespace = c.Attribute("AttributeNamespace").Value;
           string claimType = attrNamespace + "/" + attrName;

            foreach (var val in c.Elements(ASSERTION_NAMESPACE + "AttributeValue"))
            {
               claims.Add(new Claim(issuer, issuer, claimType, val.Value, CLAIM_VALUE_TYPE));
            }
        }

        return new ClaimsIdentity(claims);
    }
                                                                                                31
サーバー証明書のインポート方法
SSL を要求するサービスの場合、証明書がインストールされていないとエンドポ
イントを見つけられない(There was no endpoint listening エラー)


private void _btnInstallCert_Click(object sender, RoutedEventArgs e)
 {
    CertP7BPath = “http://<WEBサーバー>/<証明書のファイル名>.p7b";
    WebBrowserTask webBrowserTask = new WebBrowserTask();
    webBrowserTask.Uri = new Uri(CertP7BPath, UriKind.Absolute);
    webBrowserTask.Show();
 }




                                                                       32
資格情報の再利用について
•   認証のために入力した資格情報(UserID/Password)は分離ストレージに保存して再利用す
    ることが可能
•   保存の際には暗号化することが望ましい


           ID/Password 入力

                  ID/Password を送信

                        認証結果



             次回以降は起動したらすぐ
                 に認証開始

                                                       33
DPAPI を使用した暗号化/復号化
いったんByte型に変換してから暗号化する

 using System.Text;
 using System.Security.Cryptography;

 //暗号化
 byte[] PinByte = Encoding.UTF8.GetBytes(<文字列>);
 byte[] ProtectedPinByte = ProtectedData.Protect(PinByte, null);

 //復号化
 byte[] PinByte = ProtectedData.Unprotect(ProtectedPinByte, null);
 n = Encoding.UTF8.GetString(PinByte, 0, PinByte.Length);




                                                                     34
暗号化した文字列を参照するには
Base64 にエンコード
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
if (store.FileExists(encryptpin.FilePath_username) )
   {
     MessageBox.Show(
          System.Convert.ToBase64String(encryptpin.ReadPinFromFile(encryptpin.FilePath_username))
          );
    }
else
   {
      MessageBox.Show("                                 ");
    }




                                                                                                    35
まとめ

 • 企業内システムとソーシャルアプリ系で
   使用するプロトコルが違います

 • OAuth 2.0 の実装は習得必須

 • AD FS の実装方法も習得必須

 • 必要なライブラリをそろえておきましょう

 • Windows Phone を買ってね!

                          36
リソースはここに!


 http://blogs.technet.com/junichia/
 サンプルプロジェクトもこちらから




                                      37
アイデンティティ・テクノロジー
って超楽しい!
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.




© 2011 Microsoft Corporation.

All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

More Related Content

What's hot

認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向Tatsuo Kudo
 
クラウド時代の「ID管理」と「認証セキュリティ」
クラウド時代の「ID管理」と「認証セキュリティ」クラウド時代の「ID管理」と「認証セキュリティ」
クラウド時代の「ID管理」と「認証セキュリティ」Tatsuya (達也) Katsuhara (勝原)
 
Microsoft Identity Technology / Kantara Initiative Seminar 2011
Microsoft Identity Technology / Kantara Initiative Seminar 2011Microsoft Identity Technology / Kantara Initiative Seminar 2011
Microsoft Identity Technology / Kantara Initiative Seminar 2011Naohiro Fujie
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向Tatsuo Kudo
 
OAuth認証について
OAuth認証についてOAuth認証について
OAuth認証についてYoshifumi Sato
 
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜Masaru Kurahayashi
 
NRIセキュアが考える持続可能なID&アクセス管理基盤の実現
NRIセキュアが考える持続可能なID&アクセス管理基盤の実現NRIセキュアが考える持続可能なID&アクセス管理基盤の実現
NRIセキュアが考える持続可能なID&アクセス管理基盤の実現Tatsuo Kudo
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルMasaru Kurahayashi
 
Share point における id管理と認証・認可
Share point における id管理と認証・認可Share point における id管理と認証・認可
Share point における id管理と認証・認可Naohiro Fujie
 
マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版
マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版
マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版junichi anno
 
Yahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得についてYahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得についてMasaru Kurahayashi
 
Cloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOICloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOITatsuo Kudo
 
OAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティHiroshi Hayakawa
 
100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 ItohHiroki Itoh
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門Naohiro Fujie
 
エンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドラインエンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドラインTatsuo Kudo
 
アイデンティティ (ID) 技術の最新動向とこれから
アイデンティティ (ID) 技術の最新動向とこれからアイデンティティ (ID) 技術の最新動向とこれから
アイデンティティ (ID) 技術の最新動向とこれからTatsuo Kudo
 

What's hot (20)

ID Management
ID ManagementID Management
ID Management
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向
 
クラウド時代の「ID管理」と「認証セキュリティ」
クラウド時代の「ID管理」と「認証セキュリティ」クラウド時代の「ID管理」と「認証セキュリティ」
クラウド時代の「ID管理」と「認証セキュリティ」
 
Microsoft Identity Technology / Kantara Initiative Seminar 2011
Microsoft Identity Technology / Kantara Initiative Seminar 2011Microsoft Identity Technology / Kantara Initiative Seminar 2011
Microsoft Identity Technology / Kantara Initiative Seminar 2011
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向
 
20150723 最近の興味動向 fido編
20150723 最近の興味動向 fido編20150723 最近の興味動向 fido編
20150723 最近の興味動向 fido編
 
OAuth認証について
OAuth認証についてOAuth認証について
OAuth認証について
 
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
 
NRIセキュアが考える持続可能なID&アクセス管理基盤の実現
NRIセキュアが考える持続可能なID&アクセス管理基盤の実現NRIセキュアが考える持続可能なID&アクセス管理基盤の実現
NRIセキュアが考える持続可能なID&アクセス管理基盤の実現
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
 
Share point における id管理と認証・認可
Share point における id管理と認証・認可Share point における id管理と認証・認可
Share point における id管理と認証・認可
 
マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版
マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版
マイクロソフトのITコンシューマライゼーション2 - フレキシブルワークスタイルを支えるテクノロジー 第2版
 
Yahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得についてYahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得について
 
Cloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOICloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOI
 
OAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティ
 
100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 Itoh
 
Standard-based Identity (1)
Standard-based Identity (1)Standard-based Identity (1)
Standard-based Identity (1)
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
 
エンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドラインエンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドライン
 
アイデンティティ (ID) 技術の最新動向とこれから
アイデンティティ (ID) 技術の最新動向とこれからアイデンティティ (ID) 技術の最新動向とこれから
アイデンティティ (ID) 技術の最新動向とこれから
 

Similar to .NET ラボ~開発者のためのアイデンティティテクノロジーw/ Windows Phone

TechNight #12: Cloud Identity Summit 2014 @ Monteray 概要と主要トピック
TechNight #12: Cloud Identity Summit2014 @ Monteray 概要と主要トピックTechNight #12: Cloud Identity Summit2014 @ Monteray 概要と主要トピック
TechNight #12: Cloud Identity Summit 2014 @ Monteray 概要と主要トピックDaisuke Fuke
 
Open ID Connect(OIDC)をスライド形式で理解する
Open ID Connect(OIDC)をスライド形式で理解するOpen ID Connect(OIDC)をスライド形式で理解する
Open ID Connect(OIDC)をスライド形式で理解するDaisuke Takakuwa
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションTatsuo Kudo
 
クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割junichi anno
 
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~decode2016
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護Naohiro Fujie
 
Infomation Card と Windows CardSpace のご紹介
Infomation Card と Windows CardSpace のご紹介Infomation Card と Windows CardSpace のご紹介
Infomation Card と Windows CardSpace のご紹介shigeya
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
 
FIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO Alliance
 
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方Naohiro Fujie
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるNaohiro Fujie
 
Cloud で Active Directory を活用するには
Cloud で Active Directory を活用するにはCloud で Active Directory を活用するには
Cloud で Active Directory を活用するにはjunichi anno
 
Lambda認証認可パターン
Lambda認証認可パターンLambda認証認可パターン
Lambda認証認可パターンTakuro Sasaki
 
Sec004 cloud first、_mobile_first_におけるid
Sec004 cloud first、_mobile_first_におけるidSec004 cloud first、_mobile_first_におけるid
Sec004 cloud first、_mobile_first_におけるidTech Summit 2016
 
クラウド過渡期、Identityに注目だ! idit2014
クラウド過渡期、Identityに注目だ! idit2014クラウド過渡期、Identityに注目だ! idit2014
クラウド過渡期、Identityに注目だ! idit2014Egawa Junichi
 
FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理fisuda
 
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜Yahoo!デベロッパーネットワーク
 

Similar to .NET ラボ~開発者のためのアイデンティティテクノロジーw/ Windows Phone (20)

TechNight #12: Cloud Identity Summit 2014 @ Monteray 概要と主要トピック
TechNight #12: Cloud Identity Summit2014 @ Monteray 概要と主要トピックTechNight #12: Cloud Identity Summit2014 @ Monteray 概要と主要トピック
TechNight #12: Cloud Identity Summit 2014 @ Monteray 概要と主要トピック
 
Open ID Connect(OIDC)をスライド形式で理解する
Open ID Connect(OIDC)をスライド形式で理解するOpen ID Connect(OIDC)をスライド形式で理解する
Open ID Connect(OIDC)をスライド形式で理解する
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
 
クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割
 
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
Infomation Card と Windows CardSpace のご紹介
Infomation Card と Windows CardSpace のご紹介Infomation Card と Windows CardSpace のご紹介
Infomation Card と Windows CardSpace のご紹介
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
FIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へ
 
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみる
 
Cloud で Active Directory を活用するには
Cloud で Active Directory を活用するにはCloud で Active Directory を活用するには
Cloud で Active Directory を活用するには
 
Lambda認証認可パターン
Lambda認証認可パターンLambda認証認可パターン
Lambda認証認可パターン
 
Sec004 cloud first、_mobile_first_におけるid
Sec004 cloud first、_mobile_first_におけるidSec004 cloud first、_mobile_first_におけるid
Sec004 cloud first、_mobile_first_におけるid
 
クラウド過渡期、Identityに注目だ! idit2014
クラウド過渡期、Identityに注目だ! idit2014クラウド過渡期、Identityに注目だ! idit2014
クラウド過渡期、Identityに注目だ! idit2014
 
20141111 themi struct
20141111 themi struct20141111 themi struct
20141111 themi struct
 
FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理
 
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
 
Ia20120118 nishimura
Ia20120118 nishimuraIa20120118 nishimura
Ia20120118 nishimura
 
20171201_01_idsi_現状の認証システムに関連する機能
20171201_01_idsi_現状の認証システムに関連する機能20171201_01_idsi_現状の認証システムに関連する機能
20171201_01_idsi_現状の認証システムに関連する機能
 

More from junichi anno

V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...junichi anno
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティjunichi anno
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADjunichi anno
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護 junichi anno
 
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~junichi anno
 
個人情報を守るための アプリケーション設計(概要)
個人情報を守るためのアプリケーション設計(概要)個人情報を守るためのアプリケーション設計(概要)
個人情報を守るための アプリケーション設計(概要)junichi anno
 
IoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on AzureIoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on Azurejunichi anno
 
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計junichi anno
 
Azureの管理権限について
Azureの管理権限について Azureの管理権限について
Azureの管理権限について junichi anno
 
Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版junichi anno
 
リソーステンプレート入門
リソーステンプレート入門リソーステンプレート入門
リソーステンプレート入門junichi anno
 
File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaSjunichi anno
 
Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版junichi anno
 
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...junichi anno
 
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版junichi anno
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するjunichi anno
 
Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計junichi anno
 
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現junichi anno
 
SaaS としての IDM の役割
SaaS としての IDM の役割SaaS としての IDM の役割
SaaS としての IDM の役割junichi anno
 

More from junichi anno (20)

V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティ
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
 
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
 
Azure Key Vault
Azure Key VaultAzure Key Vault
Azure Key Vault
 
個人情報を守るための アプリケーション設計(概要)
個人情報を守るためのアプリケーション設計(概要)個人情報を守るためのアプリケーション設計(概要)
個人情報を守るための アプリケーション設計(概要)
 
IoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on AzureIoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on Azure
 
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
 
Azureの管理権限について
Azureの管理権限について Azureの管理権限について
Azureの管理権限について
 
Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版
 
リソーステンプレート入門
リソーステンプレート入門リソーステンプレート入門
リソーステンプレート入門
 
File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaS
 
Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版
 
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
 
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計
 
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
 
SaaS としての IDM の役割
SaaS としての IDM の役割SaaS としての IDM の役割
SaaS としての IDM の役割
 

Recently uploaded

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 

Recently uploaded (12)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

.NET ラボ~開発者のためのアイデンティティテクノロジーw/ Windows Phone

  • 1. 開発者のための アイデンティティ・テクノロジー ~ Windows Phone と 認証/認可 技術 日本マイクロソフト株式会社 エバンジェリスト 安納 順一(あんのう じゅんいち) blogs.technet.com/junichia @junichia
  • 2. 本日のテーマ 1. IdP の役割 2. IdP とプロトコル • SAML 2.0 • OAuth 2.0 3. IdP にアクセスするには • Active Directory • Windows Live • Facebook • Windows Azure AppFabric ACS 2
  • 4. 認証と認可  認証:本人であることを確認  認可:アクセス権を与えること 認証 認可 どんなシステムにも「認証」と「認可」はつきまとう 「認可」に関するプロトコルが注目を浴びている 4
  • 5. 登場人物と課題 ID パスワード 氏名 利用者 所属 など ① 本人確認(認証依頼) このアプリは ② 資格情報 使いたいけど、 IdP 個人情報を渡 して大丈夫? 自分のもの ③ 利 用 ④アクセス サービス アプ リ この資格情報や個人情報は 「この資格情報は正しいのだろうか?」 正しいのだろうか? 5
  • 6. 課題を解決するには認可の仕組みが必要 ID パスワード 氏名 利用者 所属 など ① 本人確認(認証依頼) このアプリは ② 資格情報 使いたいけど、 IdP 個人情報を渡 して大丈夫? 自分のもの ③ 利 用 ④アクセス サービス アプリの利用を認可 アプ リ この資格情報や個人情報は 「この資格情報は正しいのだろうか?」 正しいのだろうか? 6
  • 7. 2つの課題と解決方法 個人情報へのアクセスを認可 認可のプロセスに以下の要素を組み込む(プロトコル化する) • 誰が (例)本人 • いつ (例)アプリがアクセスするとき • どのように (例)画面にアラートが表示され、Y/N を選択 アプリの利用を認可 • IdP から発行された資格情報を提示する(Kerberos)。 • IdP によって署名されたセキュリティトークンを提示する(SAML、 WS-*、OAuth など)。 7
  • 8. セキュリティトークン(アサーション) • 認証の結果、IdP によって生成、発行される • ユーザーの各種属性を含めることができる ※セキュリティトークン=個人情報 • 認可のレベル(権限の強さ、ロール)を明確にできる • 署名によって正当性が担保されている セキュリティトークン/アサーション 8
  • 9. アプリ/サービスが利用を認可するまでの流れ(例1) 信頼 利用者 IdP アプリ ① UserID/Password ② 認証 個人 ③ セキュリティトークン 情報 ④ 認可 9
  • 10. アプリ/サービスが利用を認可するまでの流れ(例2) 利用者 IdP アプリ ① UserID/Password ② 認証 個人 ③ セキュリティトークン 情報 ④リダイレクト ⑥ 認可 信頼 ⑤ セキュリティトークン サービス 10
  • 11. IdP の役割 と サービスの役割 IdP の役割 • ユーザーの身元を保証しセキュリティトークンを発行する サービス/アプリの役割 • セキュリティトークンを受け取り解析する • セキュリティトークンに含まれた個人情報を利用する • ユーザーのロールを決定する 残された課題 「セキュリティトークンを発行してもよいかどうかの判断」 11
  • 13. 「認可」が重要視されるシチュエーション プロトコル  システム間の連携  企業間  企業内 SAML /WS-*  クラウドへの移行  社内 IdP の利用 企業システ ム  ソーシャルな IdP の利用 SNS  ソーシャルアプリの台頭 OAuth  個人情報保護のセルフサービス化 13
  • 14. 企業内システムとソーシャルアプリの違い • 企業内システム • 「システム(アプリ):人」の「信頼」が担保されている • SNS および ソーシャルアプリ • いかなる「信頼」も担保されていない • 特に「人」と「アプリ」の信頼関係は深刻 個人情報をアプリに提供するかどうか || アプリにセキュリティトークンを発行するかどうか 14
  • 15. OAuth と WS-*/SAML の違い • いずれも認可をするためのプロトコル • WS-*/SAML :「情報の送出」を「セキュリティポリシー」が認可する • OAuth :「『情報にアクセスするAPI』へのアクセス」を「利用者が」認可する セキュリティポリシー 事前に 環境設定 SAML 認 IdP 可 要求「情報が欲しい!」 応答「氏名、メアド...」 アプリケーション 認 ユーザーの情報 可 その都度 OAuth 利用者(情報の持ち主) 15
  • 16. Facebook(OAuth 2.0)の場合 利用者 IdP 利用している 自分のもの サービスに保存され ている個人情報 個人情報に アクセスしたい FBにアクセ スするアプ リ 16
  • 17. “API へのアクセスを認可する” とは? 外部のアプリケーションに対し、 各種情報にアクセスするためのAPIの利用を認可する仕組み Identity&Service Provider (Twitter/Facebook/Google 等) ユーザー情報 各種特権(例) 氏名を閲覧 API Lv1 メールアドレスを閲覧 投稿を閲覧 API Lv2 ③ APIにアクセス アプリ API Lv3 つながりを閲覧 近況を投稿 API Lv4 つながりを編集 属性の主体 (持ち主) 17
  • 18. Facebook(OAuth 2.0 デスクトップアプリ)の場合 利用者 アプリケーション Facebook アプリ利用開始 認証/認可画面へRedirect 認証/認可 画面表示 認証/認可を完了 CallBack url にRedirect 認可コードを発行 Access Token 要求 Access Token 発行 API 呼び出し API 18
  • 20. Windows Phone と IdP ライブラリ プロトコル Identity Provider SL.IdentityModel WS-Trust(SAMLトーク Identity Developer Training kit ン) AD FS AD DS Live SDK 5.0 OAuth 2.0(draft 16) Download Center Windows Live Facebook C# SDK OAuth 2.0(draft 10) Facebook Codeplex Windows SL.Phone.Federation OAuth Wrap Azure Windows Azure Platform Training Kit AppFabric Google ACS OpenID 系 検 OAuth 1.0a HigLabo 証 Twitter Codeplex 中 20
  • 21. Windows Phone と Active Directory • System.DirectoryServce がサポートされていない – Active Directory に直接アクセスできない – 何らかのサービスを介して認証の代行を依頼する必要がある AD DS 認証 利用 認証 認証代行 サービス 21
  • 22. Windows Phone と Active Directory Federation Service WS-Trust(SOAP) AD FS AD DS ① UserID/Password ② 認証 ⑤ セキュリティトークン ③ 属性 ④ 属性に署名 ① AD FS にはドメインのユーザーIDとパスワードを渡す(もちろん SSL) ② AD 認証は AD FS が代行 ③ AD DS からユーザーの属性が返される(どんな属性を返すかはAD FSに定義されている) ④ AD FS は「属性(クレーム)」に署名をしてセキュリティートークン(SAML アサーション) を生成 ⑤ WP アプリにはセキュリティトークンが返される 22
  • 23. Windows Phone から AD FS を利用するには SL.IdentityModel ライブラリ • Identity Developer Training Kit 2010 April に含まれている http://www.microsoft.com/download/en/details.aspx?id=14347 • PC 用 Silverlight 版なので移植が必要 Claims ProtocolsWSTrust ├ Claim.cs ├ IRequestCredentials.cs ├ ClaimCollection.cs ├ IssueCompletedEventArgs.cs ├ ClaimsIdentity.cs ├ IssuedTokenHeader.cs ├ ClaimsPrincipal.cs ├ IWSTrustContract.cs ├ ClaimType.cs ├ RequestedSecurityToken.cs ├ IClaimsIdentity.cs ├ RequestSecurityToken.cs └ IClaimsPrincipal.cs ├ RequestSecurityTokenResponse.cs ├ UsernameCredentials.cs Services ├ WindowsCredentials.cs └ TokenCache.cs ├ WSTrust13Constants.cs ├ WSTrust13ResponseSerializer.cs ├ WSTrustBinding.cs ├ WSTrustBindingUsernameMixed.cs ├ WSTrustBindingWindows.cs ├ WSTrustClient.cs ├ WSTrustRequestBodyWriter.cs └ WSTrustSerializationHelper.cs 23
  • 24. SL.IdentityModel ライブラリの移植手順 1. プロジェクトを作成 • テンプレート :Windows Phone クラスライブラリ(Visual C#) • 名前 :(例)WP.IdentityModel とか 2. 参照設定の追加 • System.Runtime.Serialization • System.ServiceModel • System.Xml.Linq 3. SL.IdentityModel から ソースをひたすらコピペ 移行したライブラリはこちらにあります http://blogs.technet.com/b/junichia/p/wp7_and_ad.aspx 24
  • 25. SL.IdentityModel を使用したアプリの作成 1. 必要情報の収集  AD FS のエンドポイント https://<ADFSサーバー>/adfs/services/trust/13/usernamemixed  スコープ(ApplyTo、業務アプリの識別名) (例)https://www.contoso.com/ 2. 参照設定の追加 • 移植したライブラリのプロジェクトを選択 3. using の追加 • using SL.IdentityModel.Claims; • using SL.IdentityModel.Protocols.WSTrust; • using SL.IdentityModel.Services; 25
  • 26. 4. 認証&セキュリティトークンの取得 WSTrustClient _client; private void _btnLogin_Click(object sender, RoutedEventArgs e) { RequestST(); } private void RequestST() { _client = new WSTrustClient( WS-Trustクライアントを作成 new WSTrustBindingUsernameMixed(), new EndpointAddress("https://tfadfs.tf.com/adfs/services/trust/13/usernamemixed"), new UsernameCredentials(< >, < >)); var rst = new RequestSecurityToken(WSTrust13Constants.KeyTypes.Bearer) { AppliesTo = new EndpointAddress("https://www.contoso.com/") }; _client.IssueCompleted += client_IssueCompleted; _client.IssueAsync(rst); セキュリティトークンを非同期で要求 } 非同期で実行 26
  • 27. void client_IssueCompleted(object sender, IssueCompletedEventArgs e) { _client.IssueCompleted -= client_IssueCompleted; if (e.Error == null) { Globals.RSTR = e.Result; MessageBox.Show( e.Result ); } else { MessageBox.Show(e.Error.Message); _btnLogin.IsEnabled = true; } } 27
  • 28. セキュリティトークン(SAML アサーション) <saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="_b6d37acb-381c-4160-a712-d3eceee44ef5" Issuer="http://tfadfs.tf.com/adfs/services/trust" IssueInstant="2011-11-28T00:16:18.445Z" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"> <saml:Conditions NotBefore="2011-11-28T00:16:18.445Z" NotOnOrAfter="2011-11-28T01:16:18.445Z“> <saml:AudienceRestrictionCondition> <saml:Audience>https://www.contoso.com/</saml:Audience> </saml:AudienceRestrictionCondition></saml:Conditions> <saml:AttributeStatement> <saml:Subject><saml:SubjectConfirmation> <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod></saml:SubjectConfirmation></saml:Subj ect> <saml:Attribute AttributeName="name" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> <saml:AttributeValue>西城秀樹</saml:AttributeValue></saml:Attribute> <saml:Attribute AttributeName="emailaddress" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> <saml:AttributeValue>administrator@tf.com</saml:AttributeValue></saml:Attribute> <saml:Attribute AttributeName="companyname" AttributeNamespace="http://schemas.tf.com"> <saml:AttributeValue>マイクロソフト</saml:AttributeValue></saml:Attribute> <saml:Attribute AttributeName="department"AttributeNamespace="http://shcemas.tf.com"> <saml:AttributeValue>エバンジェリズムグループ</saml:AttributeValue></saml:Attribute></saml:AttributeStatement> <saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password" AuthenticationInstant="2011-11- 28T00:16:18.023Z"> <saml:Subject><saml:SubjectConfirmation><saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMetho d></saml:SubjectConfirmation></saml:Subject></saml:AuthenticationStatement> 28
  • 29. つづき <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> <ds:Reference URI="#_b6d37acb-381c-4160-a712-d3eceee44ef5"> <ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <ds:DigestValue>mT+IdNIJq6No0jKKX034keFNO+0HZ3dIbnOrDnzfnI4=</ds:DigestValue></ds:Reference></ds:SignedInfo> <ds:SignatureValue>fQ/ju362tt3EGKAMOtlfFwNAa7+dZoLftbNv1wyFjkytnPaD/BlxASXkDf2KeyBG8lxIpPDBTJFczME8A3gpHKBLuFIlURldx4V5ZuVkxz ltLqjInHs/ectAzbagSHhDVYlRuo3F8zGoV2YFH4ZHme1snqPk0ArB60W5vh8jnAvmN7VsMovmmwPupMc5d4WLeXKH7/2Piz8Q2gM2sQb818lPhYzP9V80gJPPyDX 6gbbn+QUjcnITv8nohZOutophufy54498Ul6EnBfFuEUToaZZCVfh6O5NaO/gXHp4XvNgWkRNbNM1IVYBHiOrQyTPrVrccLpYKMxed1j3yJS/Nw==</ds:Signatu reValue> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509Data> <X509Certificate>MIIC1jCCAb6gAwIBAgIQX4B1j9QgNZ9GI3IsMJ/+vTANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDExxBREZTIFNpZ25pbmcgLSB0ZmFkZnMu dGYuY29tMB4XDTExMDQxNTA1NDIwM1oXDTEyMDQxNDA1NDIwM1owJzElMCMGA1UEAxMcQURGUyBTaWduaW5nIC0gdGZhZGZzLnRmLmNvbTCCASIwDQYJKoZIhvcNA QEBBQADggEPADCCAQoCggEBALcp//XyPz6m9F5ok4ebtuz7XsIdesuvlze5OgN2FD4PkAykETXHRgeheAq1TtbTN/nIiTy11kKgEAseyUSfvMGJarf49vui+zNcy3 7t+tbrBGdx+MRhuncTb7+O8FKJ3Wg/q9h8e10hq3VeEoxhzd4Ghdl1R4DfJYf10PztfFeQPvoD3FJNgca7v1BB1gRtUEEykmJvSoZFt18mhk1l+9Bsk5SJyEZaZc4 M99ubqriVzzgDMZBa02+9Y6nmyy0P+sNrPnMSg031IulcGH+Zp8/W2B2ojHx3HisNkhYc8cQPYtLVoYanZ/qLG6hdqphM5TFi67QubdqclAE7MAoOx50CAwEAATAN BgkqhkiG9w0BAQsFAAOCAQEAsU3E1uCieRjMAeVel29h9/oHLXy8hoGiy7iG3cgQBysA3Mlm3BjrLII4ze2JEZ74U8t5dk4K3K04emDuy4JhKpOP/iZXRN56UEuhI idFfsHi/k9PLXPEgG1AJnueK52u71xj8noyPJ1EsYwVWTqm5emN5CVDEpJtPFJmsdrBviChFaOO9XURrz2rcp+TAt56cDJKFqj39aKv5YAYWBiSj0UP5cSnXxI7F3 lk7kNS19L2HdhPliXFoXI+doQ6ynOJrVUSqVMIbww7nOehWxI6TyWo9+A6TTl3LmpdNYyFYXJFjNI0JMKBm1U6yEvXEApI15LQ8IfJtSjPHoIPBHfSig==</X509C ertificate> </X509Data> </KeyInfo> </ds:Signature> </saml:Assertion> 29
  • 30. 5. クレームの抽出 var sb = new StringBuilder(128); IClaimsPrincipal n = TokenHandler.Convert(Globals.RSTR); n.ClaimsIdentity.Claims.ToList().ForEach(vc => sb.AppendFormat("{0}n {1}nn", vc.ClaimType, vc.Value)); MessageBox.Show(sb.ToString()); public static class TokenHandler { private static XNamespace ASSERTION_NAMESPACE = "urn:oasis:names:tc:SAML:1.0:assertion"; private const string CLAIM_VALUE_TYPE = "http://www.w3.org/2001/XMLSchema#string"; // bit of a hack public static IClaimsPrincipal Convert(RequestSecurityTokenResponse rstr) { return new ClaimsPrincipal( GetClaimsIdentity( rstr ) ); } private static ClaimsIdentity GetClaimsIdentity(RequestSecurityTokenResponse rstr) { (この部分は次ページを参照してください) } } 30
  • 31. private static ClaimsIdentity GetClaimsIdentity( RequestSecurityTokenResponse rstr ) { XDocument responseDoc = XDocument.Parse(rstr.RequestedSecurityToken.RawToken); XElement attStatement = responseDoc.Element(ASSERTION_NAMESPACE + "Assertion").Element(ASSERTION_NAMESPACE + "AttributeStatement"); var issuer = responseDoc.Root.Attribute("Issuer").Value; ClaimCollection claims = new ClaimCollection(); foreach (var c in attStatement.Elements(ASSERTION_NAMESPACE + "Attribute")) { string attrName = c.Attribute("AttributeName").Value; string attrNamespace = c.Attribute("AttributeNamespace").Value; string claimType = attrNamespace + "/" + attrName; foreach (var val in c.Elements(ASSERTION_NAMESPACE + "AttributeValue")) { claims.Add(new Claim(issuer, issuer, claimType, val.Value, CLAIM_VALUE_TYPE)); } } return new ClaimsIdentity(claims); } 31
  • 32. サーバー証明書のインポート方法 SSL を要求するサービスの場合、証明書がインストールされていないとエンドポ イントを見つけられない(There was no endpoint listening エラー) private void _btnInstallCert_Click(object sender, RoutedEventArgs e) { CertP7BPath = “http://<WEBサーバー>/<証明書のファイル名>.p7b"; WebBrowserTask webBrowserTask = new WebBrowserTask(); webBrowserTask.Uri = new Uri(CertP7BPath, UriKind.Absolute); webBrowserTask.Show(); } 32
  • 33. 資格情報の再利用について • 認証のために入力した資格情報(UserID/Password)は分離ストレージに保存して再利用す ることが可能 • 保存の際には暗号化することが望ましい ID/Password 入力 ID/Password を送信 認証結果 次回以降は起動したらすぐ に認証開始 33
  • 34. DPAPI を使用した暗号化/復号化 いったんByte型に変換してから暗号化する using System.Text; using System.Security.Cryptography; //暗号化 byte[] PinByte = Encoding.UTF8.GetBytes(<文字列>); byte[] ProtectedPinByte = ProtectedData.Protect(PinByte, null); //復号化 byte[] PinByte = ProtectedData.Unprotect(ProtectedPinByte, null); n = Encoding.UTF8.GetString(PinByte, 0, PinByte.Length); 34
  • 35. 暗号化した文字列を参照するには Base64 にエンコード IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); if (store.FileExists(encryptpin.FilePath_username) ) { MessageBox.Show( System.Convert.ToBase64String(encryptpin.ReadPinFromFile(encryptpin.FilePath_username)) ); } else { MessageBox.Show(" "); } 35
  • 36. まとめ • 企業内システムとソーシャルアプリ系で 使用するプロトコルが違います • OAuth 2.0 の実装は習得必須 • AD FS の実装方法も習得必須 • 必要なライブラリをそろえておきましょう • Windows Phone を買ってね! 36
  • 39. 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. © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.