http 프로토콜을 사용하여 DataPower에서 Azure 서비스 버스에 메시지를 게시하려고합니다. 당신이 Shared Access Signatures
(SAS) 또는 Access Control Service
를 사용하는 경우 내가 권한이없는 오류가 발생하고 이후 어떻게 내가 여기DataPower - Azure 서비스 버스 통합
감사
을 붙어있어 이후 401도와주세요 자격 증명을 전달한다
http 프로토콜을 사용하여 DataPower에서 Azure 서비스 버스에 메시지를 게시하려고합니다. 당신이 Shared Access Signatures
(SAS) 또는 Access Control Service
를 사용하는 경우 내가 권한이없는 오류가 발생하고 이후 어떻게 내가 여기DataPower - Azure 서비스 버스 통합
감사
을 붙어있어 이후 401도와주세요 자격 증명을 전달한다
나는 해결책을 찾아 냈다. 아래는 SAS 인증 토큰을 얻는 방법입니다. A :
추출 SAS 토큰 아래 XSLT를 사용하여 데이터 파워에서 HTTP POST 요청에 대한 인증 헤더로 설정을 보낼 수 있습니다.
[401 상태 코드에 위키 (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors)로부터
이 (ACS에 의존) 서비스 버스.
SAS를 사용하는 것이 좋습니다.
Azure Node.js SDK에는 DataPower GatewayScript에서 처리 할 수없는 많은 fs (파일 시스템) 호출이 있으므로 사용할 수 없습니다. 난 그냥 당신이 필요로하는, 그래서 다른 프로젝트에서 코드를 뽑아 한
'use strict';
var crypto = require('crypto');
// ServiceBus parameters
var namespace = '<Your-ServiceBus-Namespace>';
var queue ='<Your-Queue>';
var AccessKeyName = '<Your-AccessKey-Name>';
var AccessKey = '<Your-AccessKey>';
// Full ServiceBus Queue publisher URI
var ServiceBusUri = 'https://' + namespace + '.servicebus.windows.net' + '/' + queue;
function createSASToken(uri, keyName, key)
{
//Token expires in December
var expiry = '1417774602';
var crypto = require('crypto');
var signedString = encodeURIComponent(uri) + '\n' + expiry;
var hmac = crypto.createHmac('sha256', key);
hmac.update(signedString);
var signature = hmac.digest('base64');
var token = 'SharedAccessSignature sr=' + encodeURIComponent(uri) + '&sig=' + encodeURIComponent(signature) + '&se=' + expiry + '&skn=' + keyName;
return token;
}
var SASToken = createSASToken(ServiceBusUri, AccessKeyName, AccessKey)
console.log(SASToken);
var options = {
hostname: namespace + '.' + 'servicebus.Windows.net',
port: 443,
path: '/' + queue + '/messages',
method: 'POST',
headers: {
'Authorization': SASToken,
'Content-Type': 'application/atom+xml;type=entry;charset=utf-8',
}
};
// GatewayScript url-open() goes here...
// End
:
이것은 내가 헤더를 만들 GatewayScript로 SAS에 사용한 어디 선가 발견 조각이다 일부 처리기 및 GatewayScript 프레임 워크를 추가하려면 ...
이 공식에 대해 언급 한 것처럼 서비스 버스 인증 및 인증 :
응용 프로그램은 공유 액세스 서명 (SAS) 인증, 또는 (또한 액세스 제어 서비스 또는 ACS라고도 함) 푸른 Active Directory의 액세스 제어을 통해 중 하나를 사용하여 하늘빛 서비스 버스에 인증 할 수 있습니다.
SAS 그것은 서비스 버스에 대한 간단한 유연하고 사용하기 쉬운 인증 방식을 제공하기 때문에, ACS 이상을 권장합니다. 응용 프로그램은 허가 된 "사용자"의 개념을 관리 할 필요가없는 시나리오에서 SAS를 사용할 수 있습니다.
1) 공유 액세스 서명
토큰의 형식은 다음과 같습니다
SharedAccessSignature sig=<signature-string>&se=<expiry>&skn=<keyName>&sr=<URL-encoded-resourceURI>
를 사용하여 HTTP 수준에서 공유 액세스 서명() sending message에 대한 :
POST http{s}://<yournamespace>.servicebus.windows.net/<path>/messages
Authorization: SharedAccessSignature sr=https%3A%2F%2F<yournamespace>.servicebus.windows.net%2F<path>&sig=<your-signature>&se=1438205742&skn=KeyName
ContentType: application/atom+xml;type=entry;charset=utf-8
자세한 내용은 개발 언어에 따라 SAS 토큰을 생성하는 데 대한 tutorial을 참조하십시오.
2) 액세스 제어 서비스 (ACS)
는 다음과 같이 New-AzureSBNamespace PowerShell을 cmdlet을 사용하여 네임 스페이스를 만들어야합니다: 자세한 내용은
,이 blog를 참조 할 수 . 보내는 메시지
사용 ACS :
POST http{s}://<yournamespace>.servicebus.windows.net/<path>/messages
Authorization: WRAP access_token={swt}
ContentType: application/atom+xml;type=entry;charset=utf-8
는 SWT 토큰보기에 대한 자세한 내용은
토큰 SWT를 구축,이 blog 및 참조 수 이 tutorial은 ACS에서 토큰을 요청하는 방법에 관한 것입니다.
"응답 요청 된 자원에 적용 가능한 챌린지를 포함하는 WWW-Authenticate 헤더 필드를 포함해야합니다. "라는 응답 헤더 필드"WWW-Authenticate "에는 무엇이 들어 있습니까? –