問題タブ [dynamics-crm-2016]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Confidential User /Daemon Server /Server-to-Server - 401 Unauthorized として ADAL C# を使用する
未回答の質問への言及:
401- Azure AD で REST API Dynamics CRM を使用した不正な認証
と
Dynamics CRM Online 2016 - デーモン/サーバー アプリケーション Web Api への Azure AD 認証エラー
と
Dynamics CRM 2016 Online Rest API とクライアント資格情報 OAuth フロー
Azure クラウドの Web サービスと Dynamics CRM Online 2016 の間で、ログイン画面なしで通信する必要があります。このサービスには、CRM で CRUD 操作をトリガーする REST API があります (認証も実装します)。
これは「Confidential Client」または「Daemon Server」または単に「Server-to-Server」と呼ばれていると思います
Azure AD でサービスを適切に設定しました (「委任権限 = 組織ユーザーとしてオンラインでダイナミクスにアクセス」、他にオプションはありません)
VS で ASP.NET WEB API プロジェクトを作成し、Azure で WebService を作成し、CRM の Azure AD 内の「アプリケーション」のエントリも作成しました。
私のコードは次のようになります (エンティティタイプと returnValue は無視してください):
GET リクエストを呼び出すと、AccessToken を取得して送信しても 401 Unauthorized が返されます。
何か案は?
編集:このブログでアドバイスされているコードも試しました(問題を解決したように見えるソースのみで、どちらも機能しませんでした):
このコードで:
dynamics-crm-2011 - CRM 2016 の役割ベースのセキュリティ
という新しいロールを作成しましたmedical administrators
私の動機は、ユーザーの役割が医療記録を作成/編集/削除できるようにすることです
カスタム エンティティ タブに移動し、カスタム エンティティに対して [作成、読み取り、書き込み、削除、追加、追加] を選択しました。
しかし、ユーザーが CRM 環境にアクセスしようとすると、以下のメッセージが表示されます
不十分な権限
これらのレコードにアクセスする権限がありません。Microsoft Dynamics CRM 管理者に連絡してください。
特定のユーザー グループに他に何を追加すればよいですか?
dynamics-crm-2011 - CRM 2016 で新しく作成されたプロファイルを使用してレコードを作成できない
でユーザー testaccount1 を作成してactive directory
から、CRM 2016 で新しいユーザー プロファイルを作成し、そのアカウントをセキュリティ グループに追加しました。
そのアカウントにアクセス権を付与したレコードを作成できました
同じ手順を繰り返して で testaccount2 をactive directory
作成し、CRM でユーザー プロファイルを作成して、testaccountn1 と同じセキュリティ グループに追加しました。
しかし、testaccount2 を使用してレコードを作成しようとすると、以下のエラーが発生します
不十分な権限 これらのレコードにアクセスする権限がありません。Microsoft Dynamics CRM 管理者に連絡してください。
これらの両方のアカウントに割り当てられているセキュリティ ロールは 1 つだけですが、これを修正するにはどこを探す必要がありますか?
oauth - Dynamics CRM 2016 Web API にアクセスするときの 401
コンソール アプリケーションからDynamics 2016 CRM OData Web APIにアクセスするのに苦労しています。
Dynamics CRM 2016をインストールし、クレームベース認証で構成し、AD FS v3.0 を使用しています。
私の理解では、コンソール アプリ (または Web アプリ) は、Windows 統合認証 (つまり、NTML または Kerberos) を使用して、特別な処理なしで Web API にアクセスできる必要があります。または、有効にすると OAuth フローが機能するはずです。
Dynamics の「ページ」にアクセスする通常のユーザーの場合、認証は正常に機能しますが (AD FS ログイン ページへのリダイレクト)、OData API へのアクセスは機能しないようです (例: https://crm.domain.org/api/)。発見/v8.0/ ):
- ブラウザーで Windows ログイン プロンプトが表示され、有効な資格情報を入力すると常に HTTP 401 の無許可エラーが発生する
- ブラウザーで、ページにログオンした後にWeb API の URL に移動すると、Web APIにアクセスできます (つまり、いくつかの Cookie を設定する必要があり、既に暗黙的に承認されています)。
- コードから、特定の有効な資格情報 (または現在の資格情報) を持つ HttpClient を使用して、401 も取得します
私が試したこと:
- クレームベース認証を完全に無効にすると、HttpClient は正常に動作し、OData API にアクセスできるようになります
クレームベース認証を有効のままにし、PowerShell 経由でOAuth
Add-PSSnapin Microsoft.Crm.PowerShell ; $ClaimsSettings = Get-CrmSetting -SettingType OAuthClaimsSettings; $ClaimsSettings.Enabled = $true ; Set-CrmSetting -Setting $ClaimsSettings ;
を有効にすると。Windows 統合認証はまだ機能しませんが、ベアラー認証を使用できるようになりました。このスニペットを使用してトークン生成用の OAuth エンドポイントを取得し、それを使用
AuthenticationContext.AcquireTokenAsync
してトークンを発行し、それをAuthorization
HTTP ヘッダーに渡すことができますが、何があっても、次のエラーが発生します。Bearer error=invalid_token, error_description =Error during token validation!, authorization_uri=https://our.adfs.domain.org/adfs/oauth2/authorize, resource_id=https://crm.domain.org/
何か不足していますか?それはおそらく構成の問題ですか?
microsoft-dynamics - マイクロソフト ダイナミクス 2016 Web API | POST 請求書詳細
Web API にアクセスできPOST
ます。invoice EntityType
を作成した後、invoice
を取得し、guid
請求書の明細項目を作成したいと考えていますinvoicedetail EntityType
。
私はPOST
新しいことができませんinvoicedetail
。さまざまなプロパティを使用して試行するたびに、またはのいずれかを受け取りError 500 - An unexpected error occurred.
ますError 500 - The parent id is missing.
私がしようとしているJSON文字列の例POST
。(invoicedetailid
はGUID
私が作成した以前の請求書の です)
ドキュメンテーションはあいまいで、知りたいのですが、最低限必要なフィールドは何invoicedetail
ですか?POST
また、新しい.invoice EntityType
dynamics-crm-online - Microsoft Dynamics CRM 2016 で強化された SLA を使用して、レコードの経過時間とレコードの合計経過時間フィールドを計算する必要がある
拡張 SLA を使用してレコードとレコードの合計年齢を計算する必要があります。出来ますか?
Age : レコードには StartDate フィールドがあり、StartDate の値は 2016 年 3 月 1 日であり、EndDate という名前の別のフィールドがあり、EndDate の値は 2016 年 3 月 31 日であり、サービスはこの期間に 3 日間保持されるため、Ageになります: 31 - 3 = 28
合計年齢: 上記の例と同じですが、違いは保留日数を含める必要がないため、合計年齢は : 31 になります。
ありがとう、