2016-10-19 1 views
0

나는 다이나믹스 CRM에 플러그인을 작성했습니다. 이 플러그인은 Azure 클라우드에 배포 된 몇 가지 Web API 2 메소드에 액세스합니다 (HTTPS 통해). CRM의 연락처 데이터가 변경되면 플러그인이 트리거됩니다. 많은 CRM 계정 소유자가 연락처 데이터를 업데이트합니다.다이나믹스 인증을위한 CRM 플러그인 웹 API 2 액세스 방법

플러그 인에서 '비밀 키'(한 번 생성 된 Guid)를 하드 코딩하고 웹 API 메서드에 액세스 할 때마다이 키를 보냅니다. 승인되지 않은 액세스를 방지하기 위해 웹 API 메소드에서이 GUID의 유효성을 검사합니다.

비밀 키 (guid)를 소스 코드에 저장하지 않습니다.

질문

  1. '하드 코드'비밀 키를하지 않으려면 내 대안은 무엇인가?
  2. 이 접근법의 보안 결함은 무엇입니까?

참고 일반적으로

는, 내 모든 웹 API는 사용자 지정 인증 웹 API를 필터에 의해 인증되어 있지만, 플러그인에서 액세스하는 웹 API는 사용자 지정 인증의 일부가 아닙니다.

CRM 버전은 2013입니다.

답변

2

이전 답변 에서처럼 첫 번째 옵션은 플러그인에서 검색 할 수있는 구성 사용자 지정 엔터티에 정보를 저장하는 것입니다. 이러한 레코드는 CRM 보안 모델에 의해 보호됩니다. 따라서 호출 사용자 컨텍스트에서 플러그인이 실행중인 경우 사용자가 해당 정보를 읽을 수있는 권한이 있는지 확인해야합니다 (실제로는 좋은 생각이 아닙니다). 또는 플러그인을 변경해야합니다 관리 사용자 컨텍스트에서 실행됩니다.

또 다른 옵션은 Secure/Unsecure Configuration을 사용하는 것입니다 enter image description here 그 당신이 단계에서 구성 할 수 있습니다 당신은 플러그인에서 그들을 읽을 수 두 (문자열) 매개 변수입니다. 보안 구성이 요구 사항에 맞지만 모양을 제공한다고 말합니다. 또한 구현 방법을 쉽게 찾을 수 있습니다 (example).

제가 생각할 수있는 세 번째이자 마지막 옵션은 XML WebResource를 만들고 플러그인에서 읽는 것입니다. 다시 말하지만 플러그인의 사용자 컨텍스트가 실행 중인지 확인해야합니다.

1

이 방법은 안전하지 않을 것이라고 생각합니다.

CRM에서 플러그인 어셈블리를 추출 할 수 있습니다. 그런 다음 누군가가 어셈블리를 분해하고 가이드를 찾을 수 있습니다. 효과적으로 암호는 일반 텍스트로 저장됩니다.

적어도 CRM 레코드에 사용자 이름/암호/비밀 키를 저장할 수 있습니다. 그런 다음 CRM 레코드를 CRM 보안으로 보호 할 수 있습니다.

'정상적으로'인증을 구현하는 것이 좋습니다.

관련 문제