ОК, я понял ответ на этот вопрос. Поэтому для проверки подлинности с помощью API-интерфейса Azure Bot Framework DirectLine мне пришлось использовать HTTP-перехватчик в моем приложении Angular.
По сути, когда я отправляю запрос HTTP Post, он перехватывается перехватчиком и там добавляется заголовок с секретом авторизации. См. Код перехватчика:
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from
'@angular/common/http';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
import { BotFramework } from '../Services/botFrameworkDirectLine.service';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private botFramework: BotFramework) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('Intercepted', req);
const copiedReq = req.clone({headers: req.headers.set('Authorization',
this.botFramework.secret)});
return next.handle(copiedReq);
}
}
Вот код, где я делаю пост, который почти такой же, как приведенный выше, за исключением секретной переменной:
import { Injectable } from '@angular/core';
import { HttpClient} from '@angular/common/http'
import 'rxjs/Rx';
@Injectable()
export class BotFramework {
secret = 'Bearer SECRET';
constructor(private httpClient: HttpClient) {}
authenticate() {
return this.httpClient.post(
'https://directline.botframework.com/v3/directline/conversations',{
observe: 'body',
response: 'json',
})
.map(
(response) => {
const data = response;
console.log('Returned response: ' + response);
return data;
}
)
}
}
В файле app.module.ts в моем приложении Angular перехватчик импортируется следующим образом (см. Провайдеры):
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
BreadcrumbComponent,
TopicComponent,
HubComponent,
ComputerHardwareComponent,
BotComponent,
PopularTopicsComponent,
LoginComponent,
GraphicsCardsComponent
],
imports: [
BrowserModule,
FormsModule,
HttpClientModule,
HttpModule
],
providers: [
KeywordExtractor,
Translator,
BotFramework,
{provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true}
],
bootstrap: [AppComponent]
})
export class AppModule { }
В результате я получаю правильный ответ от соединения Azure Bot Service DirectLine:
Это дает ответ на мой собственный вопрос, и теперь я могу продолжить разработку своего приложения:)