1

CRM Dynamics Onlineに接続しようとしていますが、ユーザー名とパスワードを取得するためにコンソールから次のコマンドを実行すると、そこにアクセスできます。

deviceregistration.exe /operation:show

プログラムで情報を含むXMLを読むことができれば、明らかにもっと良いでしょう。ただし、ファイルの内容はひどく暗号化されており、次のようになっています。

<Data version="1">
  <User username="1kz9u5e4t4br4nah8sm61coc" type="Logical">
    <Pwd>
      AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAASLr2v6+hUU2goUw2ivLu9AAAAAACAAAAAAA 
      QZgAAAAEAACAAAABvPcbpZtXzDjyRoQAm19c71KA3J6TpyU0rieu4WY/1OgAAAAAOgA
      AAAAIAACAAAAAT5Aunf6PBWDRp7UPKYrcP33tniAfAHf1MzEjcUAvVKSAAAAArJkRAv
      Ml+cgNy8fUscH//u41scGezSw+OOvOkpn86r0AAAADLmCwYMLVw+Qo5hPwxnlawMW7s
      0fvMJJkM1UiyfBQ49nJOF7v0pa32DtFFluDsjGv4Yddj7j+FtNiYNxmvzc0l
    </Pwd>
  </User>
</Data>

C#を使用して実際のデータにアクセスするにはどうすればよいですか?私はファイルにアクセスし、その内容を読み、目的の2つの文字列を取得するXML構造を処理する方法を知っていることに注意してください。問題は、暗号化されたバージョンから単純なバージョンに移行していることです。

4

1 に答える 1

0

CRM SDKには、ファイルsdk \ samplecode \ cs \ helpercode\deviceidmanager.csが含まれています。このファイルは、DynamicsCRMをオンラインで接続する場合に役立ちます。

    ClientCredentials credentials = new ClientCredentials();
    credentials.UserName.UserName = userName;
    credentials.UserName.UserName = userName;
    credentials.UserName.Password = password;

    IServiceManagement<IOrganizationService> orgServiceManagement = ServiceConfigurationFactory.CreateManagement<IOrganizationService>(new Uri(organizationUrl));

    AuthenticationCredentials authCredentials = new AuthenticationCredentials();
    authCredentials.ClientCredentials = credentials;
    authCredentials.SupportingCredentials = new AuthenticationCredentials();
    authCredentials.SupportingCredentials.ClientCredentials = Microsoft.Crm.Services.Utility.DeviceIdManager.LoadOrRegisterDevice();
    AuthenticationCredentials tokenCredentials = orgServiceManagement.Authenticate(authCredentials);
    var organizationTokenResponse = tokenCredentials.SecurityTokenResponse;

    OrganizationServiceProxy _serviceProxy;
    IOrganizationService _service;
    using (_serviceProxy = new OrganizationServiceProxy(orgServiceManagement, organizationTokenResponse))
    {
        _service = (IOrganizationService)_serviceProxy;

        WhoAmIResponse response = (WhoAmIResponse)_service.Execute(new WhoAmIRequest());
        Console.WriteLine(response.UserId.ToString());
    }
于 2012-09-21T09:06:51.663 に答える