ポータル認証 (Dynamics CRM 2015)

 

公開日: 2016年11月

対象: Dynamics CRM 2015

Microsoft アカウント を使用すると、独自のセキュリティ プロバイダーを作成せずに、Web サイトでユーザーを認証できます。 このトピックでは、Developer Extensions for Microsoft アカウント およびポータル ツールキットを使用し、Microsoft Dynamics CRM 2015 認証を Web サイトで使用する方法を説明します。

このトピックの内容

Microsoft アカウントで Web サイトを登録

LiveIdLoginStatus コントロールの追加

メンバーシップ プロバイダーおよびハンドラー サービスの追加

強制登録

Microsoft アカウントで Web サイトを登録

最初に Web サイトを Microsoft アカウント に登録する必要があります。

https://account.live.com/developers/applications

サイトを登録するときは、単に “yourdomain.com” とするのではなく、“yoursite.yourdomain.com” のように、フル ドメインを指定する必要があります。

また、サインインが終了したときに Microsoft アカウント 要求を戻す URL を指定する必要もあります。 これはハンドラー サービスです。これについては、このドキュメントで後から説明しますが、既定では次の URL を入力します。

http://yoursite.yourdomain.com/liveid.axd. 

Web サイトを登録するとアプリケーション ID とシークレットが提供されます。これらを使用して web.config をプラグインすると、サイトを Microsoft アカウント に接続できます。

次の注意事項があります。

ドメイン名には、localhost、127.0.0.1、または "live" という語を含む文字列を使用できません。

Web サイトの管理を他のユーザーと共有することはできません。

ドメイン名はいったん登録すると変更できません。

LiveIdLoginStatus コントロールの追加

最後のステップは、LiveIdLoginStatus コントロールの追加です。これは LoginStatus コントロールのように機能します。 認証されていないユーザーにはログイン リンクを表示し、認証されたユーザーにはログアウト リンクを表示します。

匿名ユーザーの場合、ユーザーがリンクを使用すると Windows Live に接続します。または、オプションとして (Loginhref を使用して) 指定したランディング ページが表示されて、Windows Live に接続することが通知されます。

認証されると、ログアウト リンクによって、現在のユーザーの ID が匿名ユーザーにリセットされます。

<crm:LiveIdLoginStatus runat="server" /> 

これで、"crm" タグ接頭辞が "Microsoft.Xrm.Portal.Web.UI.WebControls" に登録されたとみなされます。

メンバーシップ プロバイダーおよびハンドラー サービスの追加

メンバーシップ プロバイダーによってユーザー ログイン情報が処理されます。Microsoft アカウント を使用するときは、Microsoft アカウント メンバーシップ プロバイダーの使用が必要になります。

<membership defaultProvider="CrmMembershipProvider">
    <providers>
        <add name="CrmMembershipProvider" type="Microsoft.Xrm.Portal.Web.Security.LiveIdMembershipProvider, Microsoft.Xrm.Portal" liveIdConnectionStringName="Live"/>
    </providers>
</membership>

ハンドラー サービスは、認証されたユーザーが Web サイトに登録されているかどうかを検証します。インターネット インフォメーション サービス (IIS) 7 サイトを統合モードで実行している場合は、<handlers> セクションに次の設定が追加されていることを確認する必要があります。

<add name="LiveId" verb="*" path="LiveID.axd" preCondition="integratedMode" type="Microsoft.Xrm.Portal.Web.Handlers.LiveIdWebAuthenticationHandler, Microsoft.Xrm.Portal" />

従来のパイプライン モードまたは IIS6 で実行している場合、ハンドラー サービスは Web.config ファイルの <httpHandlers> セクションに構成されます。

<add verb="*" path="LiveID.axd" type="Microsoft.Xrm.Portal.Web.Handlers.LiveIdWebAuthenticationHandler, Microsoft.Xrm.Portal"/>

強制登録

認証のために Microsoft アカウント を使用するとき、わかるのは Passport 一意識別子 (PUID) だけです。 ユーザーのその他の情報 (表示名や電子メールなど) が必要な場合は、ユーザーから提供してもらう必要があります。 これを実行するには、一般的に次の 2 つの方法があります。

  • ユーザーがログインしてから、都合のよいときに情報を入力できるページを設定します。

  • ユーザーをサイトで認証する前に情報を収集します。

2 つ目の方法を実行するには、Microsoft アカウント の設定で特別な処理が必要になります。

  1. ユーザー登録の際に、Microsoft Dynamics 365 はユーザーの PUID を認識し、ユーザーの Microsoft Dynamics 365 連絡先情報と関連付ける必要があります。 つまり、Microsoft アカウント を使用してユーザーをログインさせてから、そのユーザーを登録ページにアクセスさせる必要があります。 このためには、RegistrationUrl 属性を LiveIdLoginStatus コントロールに追加します。

    <crm:LiveIdLoginStatus runat="server" RegistrationUrl="/CreateUser" /> 
    
  2. Microsoft アカウント トークンを保持し、必要な情報を収集した時点で新しいユーザーを作成するコードを、登録ページの分離コードに追加する必要があります。

    protected void Page_Load(object sender, EventArgs e)
    {
      if (InvitationCode == null || InvitedContact == null)
      {
        var page = SiteContext.Current.Website.GetPageBySiteMarkerName("Home");
        Response.Redirect(page.GetUrl());
      }
    
      // Add the Live ID variables that come from the authentication handler to hidden 
      // script variables.
      if (Request["live-id-action"] == "register")
      {
        Page.ClientScript.RegisterHiddenField("live-id-token", 
          Request["live-id- token"]);
        Page.ClientScript.RegisterHiddenField("live-id-action", 
          Request["live-id-action"]);
      }
    }
    

関連項目

Microsoft Dynamics CRM 2015 用ポータル開発者ガイド
ポータル開発の準備 (Dynamics CRM 2015)
ASP.NET Web フォームとデータ バインド
ポータル コンテンツの管理 (Dynamics CRM 2015)
Dynamics CRM 2015 のポータルのチュートリアル

© 2017 Microsoft. All rights reserved. 著作権