このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
方法:ACS 管理サービスを使用して、AD FS 2.0 をエンタープライズ ID プロバイダーとして構成する
Collapse the table of content
Expand the table of content

方法:ACS 管理サービスを使用して、AD FS 2.0 をエンタープライズ ID プロバイダーとして構成する

発行: 2011年4月

更新日: 2015年6月

適用対象: Azure

  • Microsoft® Azure™ Access Control Service (ACS)

  • Active Directory フェデレーション サービス (AD FS) 2.0

このトピックでは、 ID プロバイダーを名前空間または証明書利用者アプリケーションに追加する方法を説明します。このタスクを実行する場合、ACS 管理サービスを使用できます。管理サービスは、ACS を管理するためのカスタム ユーザー インターフェイスを作成する場合や、マルチテナント SaaS (Software as a Service) ソリューションの新しいテナントの追加を自動化する場合に特に役立ちます。

  • 目標

  • 概要

  • 手順の概要

  • 手順 1 – 構成情報を収集する

  • 手順 2 – 必要なサービスとアセンブリへの参照を追加する

  • 手順 3 – 管理サービス プロキシを実装する

  • 手順 4 – ID プロバイダーを追加する

  • 手順 5 – 作業をテストする

  • 要件および構成情報を特定する。

  • 必要な手順を一覧表示する。

  • 構成が正常に完了したことを確認する。

ACS 管理サービスは、ACS のコーディング機能を公開する Web サービスです。ACS 管理サービスは、ACS 管理ポータル ユーザー インターフェイスで使用可能な機能のサブセットを含む、すべての ACS の機能にアクセスできます。

Microsoft を ID プロバイダーとして ACS に追加すると、クラウドベース ソリューションの企業 ID 管理に対して行った投資を再利用できます。 を ID プロバイダーとして構成するには、特定の手順に従うコードを記述する必要があります。このトピックでは、これらの基本手順の概要を示します。

  • 手順 1 – 構成情報を収集する

  • 手順 2 – 必要なサービスとアセンブリへの参照を追加する

  • 手順 3 – 管理サービス プロキシを実装する

  • 手順 4 – ID プロバイダーを追加する

  • 手順 5 – 作業をテストする

この手順では、必要な構成情報の収集方法について説明します。次の情報を収集する必要があります。

  • 管理サービス ID ユーザー名。既定値は ManagementClient です。

  • 管理サービス ID パスワード。

  • 名前空間の名前。

  • ACS ホスト名:accesscontrol.windows.net

  • 署名証明書文字列: デプロイから AD FS 署名証明書文字列を取得します。

管理サービス ID ユーザー名とパスワードを検索するには、次の手順を使用します。

  1. Microsoft Azure 管理ポータル (https://manage.WindowsAzure.com) に移動してサインインし、[Active Directory] をクリックします。(トラブルシューティングのヒント:"Active Directory" 項目が見つからないか、使用できません) アクセス制御名前空間を管理するには、名前空間をクリックしてしてから [管理] をクリックします。または、[アクセス制御名前空間] をクリックして名前空間を選択し、[管理] をクリックします。

  2. [管理サービス] をクリックしてから、[ManagementClient] などの管理サービスを選択します。

  3. [名前] フィールドの値は Management Service identity username です。

  4. [資格情報] セクションで、[パスワード] をクリックします。パスワード フィールドの値は管理サービス ID パスワードです。

必要な情報を収集したら、以下の手順に従って、 を ID プロバイダーとして追加するコードを実行するサンプルのコンソール アプリケーションを作成します。

  1. Visual Studio を開始し、新しいコンソール アプリケーション プロジェクトを作成します。

  2. Program クラスで、モジュール スコープを持つ変数に構成情報値を割り当てます。この方法は以下のコード サンプルに示されています。

    static string serviceIdentityUsernameForManagement = "ManagementClient";
    static string serviceIdentityPasswordForManagement = "ManagementClientPasswordValue";
    
    static string serviceNamespace = "MyNameSpaceNoDots";
    static string acsHostName = "accesscontrol.windows.net";
    
    static string signingCertificate = "Very long string representing ADFS signing certificate";
    
    static string cachedSwtToken;
    static string identityProviderName = "My Other ADFS Identity Provider";
    
    
    

この手順では、サービスとアセンブリに必要な依存関係を特定し、追加します。

  1. System.Web.Extensions への参照を追加します。

  2. 管理サービスへのサービス参照を追加します。管理サービスの URL は名前空間に対して一意であり、次のような形式です。

    https://YOURNAMESPACE.accesscontrol.windows.net/v2/mgmt/service

  3. 次の宣言を追加します。

    using System.Web; 
    using System.Net; 
    using System.Data.Services.Client; 
    using System.Collections.Specialized; 
    using System.Web.Script.Serialization;
    
    

この手順では、管理サービス プロキシの実装をカプセル化するメソッドを作成します。

  1. 次のメソッドを Program クラスに追加します。

    public static ManagementService CreateManagementServiceClient()
            {
                string managementServiceHead = "v2/mgmt/service/";
                string managementServiceEndpoint = 
    string.Format("https://{0}.{1}/{2}", 
    serviceNamespace, 
    acsHostName, 
    managementServiceHead);
                ManagementService managementService = 
    new ManagementService(new Uri(managementServiceEndpoint));
    
                managementService.SendingRequest += GetTokenWithWritePermission;
    
                return managementService;
            }
    
    
  2. GetTokenWithWritePermission メソッドとそのヘルパー メソッドを実装します。これにより、SWT OAuth トークンが HTTP 要求の承認ヘッダーに追加されます。

    
            public static void GetTokenWithWritePermission(object sender, 
    SendingRequestEventArgs args)
            {
                GetTokenWithWritePermission((HttpWebRequest)args.Request);
            }
    
            public static void GetTokenWithWritePermission(HttpWebRequest args)
            {
                if (cachedSwtToken == null)
                {
                    cachedSwtToken = GetTokenFromACS();
                }
    
                args.Headers.Add(HttpRequestHeader.Authorization, 
     string.Format("OAuth {0}", 
     cachedSwtToken));
            }
    
            private static string GetTokenFromACS()
            {
                // request a token from ACS
                WebClient client = new WebClient();
                client.BaseAddress = string.Format("https://{0}.{1}", 
          serviceNamespace, 
          acsHostName);
    
                NameValueCollection values = new NameValueCollection();
    
                values.Add("grant_type", "password");
                values.Add("client_id", serviceIdentityUsernameForManagement);
                values.Add("username", serviceIdentityUsernameForManagement);
                values.Add("client_secret", serviceIdentityPasswordForManagement);
                values.Add("password", serviceIdentityPasswordForManagement);
    
                byte[] responseBytes = 
    client.UploadValues("/v2/OAuth2-13/rp/AccessControlManagement", 
          "POST", 
          values);
    
                string response = Encoding.UTF8.GetString(responseBytes);
    
                // Parse the JSON response and return the access token 
                JavaScriptSerializer serializer = new JavaScriptSerializer();
    
                Dictionary<string, object> decodedDictionary = 
    serializer.DeserializeObject(response) as Dictionary<string, object>;
    
                return decodedDictionary["access_token"] as string;
    
            }
    
    

この手順では、前に作成した管理サービス プロキシを使用して、 を ID プロバイダーとして追加します。

  1. 管理サービス プロキシを初期化します。

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. ID プロバイダーを発行者として追加します。

    Issuer issuer = new Issuer
           {
           Name = identityProviderName
    };
           svc.AddToIssuers(issuer);
           svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  3. ID プロバイダーを作成します。

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
    
  4. あらかじめ取得した証明書に基づいて、ID プロバイダー署名キーを作成します。

    IdentityProviderKey identityProviderKey = new IdentityProviderKey()
    {
        DisplayName = "SampleIdentityProviderKeyDisplayName",
        Type = "X509Certificate",
        Usage = "Signing",
        Value = Convert.FromBase64String(signingCertificate),
        IdentityProvider = identityProvider,
        StartDate = startDate,
        EndDate = endDate,
    };
          svc.AddRelatedObject(identityProvider, 
    "IdentityProviderKeys", 
    identityProviderKey);
    
    
  5. ID プロバイダーのサインイン アドレスを更新します。

    IdentityProviderAddress realm = new IdentityProviderAddress()
    {
        Address = "http://SampleIdentityProvider.com/sign-in/",
        EndpointType = "SignIn",
        IdentityProvider = identityProvider,
    };
    svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm);
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  6. 管理サービスを除く証明書利用者が ID プロバイダーが使用できるようにします。

    foreach (RelyingParty rp in svc.RelyingParties)
    {
        // skip the built-in management RP. 
        if (rp.Name != "AccessControlManagement")
        {
            svc.AddToRelyingPartyIdentityProviders(new RelyingPartyIdentityProvider()
            {
                IdentityProviderId = identityProvider.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    

  1. [Access Control Service] ページで、[信頼関係] セクションの [規則グループ] リンクをクリックします。

  2. 使用可能ないずれかの規則をクリックします。

  3. [規則グループの編集] ページで、[規則の追加] リンクをクリックします。

  4. [要求規則の追加] ページで、[要求の発行者] セクションのドロップダウン リストから新しく追加した ID プロバイダーを選択します。

  5. 残りの既定値はそのままにします。

  6. [保存] をクリックします。

これで、ID プロバイダーのパススルー規則が作成されました。

コミュニティの追加

追加
表示:
© 2015 Microsoft