2016-05-26 11 views
2

私はCRM 2016 Onlineと連携して動作する.NET MVCアプリケーションを用意しています。 Azure AD認証をプロジェクトに追加したので、ユーザーはCRMに使用するのと同じアカウントでログインできます。すでにログに記録されている場合、ログイン画面は表示されません。Azure AD Credentialsを使用してCRM Webservicesに接続

問題は、これらの資格情報を使用して、組織サービスまたはWeb APIによってCRMからデータを取得することです。

すでにログインしている情報をどのように使用してサービスに渡すことができますか?どこのコードサンプル?

ADALのように見えます。私はここで https://msdn.microsoft.com/en-us/library/gg327838.aspx

// Authenticate the registered application with Azure Active Directory. 
AuthenticationContext authContext = 
new AuthenticationContext("https://login.windows.net/common", false); 
AuthenticationResult result = authContext.AcquireToken(resource, clientId, new 
                Uri(redirectUrl)); 

このコードを試してみました何AuthenticationContextはありませんでした。私はこれを得るためにADAL NuGetパッケージを追加しました。しかし、失敗! AuthenticationContextにAcquireTokenメソッドはありません。全く異なるパラメータを持つAcquireTokenASyncというものがあります。だから私もここにこだわっている!

もしこれがうまくいくなら、既に行っているAzure ADログインを使用することができますか、それとも新しいログイン画面をポップアップするでしょうか?

+0

私はADALの古いバージョンをダウンロードして取り組んでいることです。 このAquireTokenでエラーが発生しました: {"AADSTS65005:クライアントアプリケーションがリソース 'https://xxx.api.crm4.dynamics.com'へのアクセスを要求しました。 これが機能するには何を設定する必要がありますか? – SamiR

+0

これは私が探していたものではありません。毎回新しいログイン画面が表示されます。既にそのOffice 365アカウントでログインしています。 – SamiR

答えて

0

これはあなたの状況にはあまり適していない可能性があります。

  1. サービスアカウントでMVCアプリを実行します。
  2. サービスアカウントの資格情報を使用してCRMにアクセスします。
  3. 誰かがあなたのMVCアプリケーションにログインしているとき、あなたは自分の電子メールアドレスやドメイン名のようなものがあると思います。
  4. systemuserのサービスアカウント検索CRMとして、電子メールアドレスまたはドメイン名に一致するレコードがあります。システムユーザーレコードIDを見つける必要があります。
  5. 別のIOrganizationServiceを作成しますが、CRMで見つかったユーザーレコードIDを渡します。
  6. サービスアカウントがMVCアプリにログインしているユーザーを偽装しています。あなたが行うことは、偽装されたユーザーとして実行されます。

Impersonate another user

// Retrieve the system user ID of the user to impersonate. 
OrganizationServiceContext orgContext = new OrganizationServiceContext(_serviceProxy); 
_userId = (from user in orgContext.CreateQuery<SystemUser>() 
      where user.FullName == "Kevin Cook" 
      select user.SystemUserId.Value).FirstOrDefault(); 

// To impersonate another user, set the OrganizationServiceProxy.CallerId 
// property to the ID of the other user. 
_serviceProxy.CallerId = _userId; 

Impersonate another user using the Web API

POST [Organization URI]/api/data/v8.1/accounts HTTP/1.1 
MSCRMCallerID: 00000000-0000-0000-000000000002 
Accept: application/json 
Content-Type: application/json; charset=utf-8 
OData-MaxVersion: 4.0 
OData-Version: 4.0 

{"name":"Sample Account created using impersonation"} 
関連する問題