Microsoft объединяется в ServiceNow интеграции - PullRequest
0 голосов
/ 08 октября 2018

Я сейчас пытаюсь интегрировать Microsoft Teams и ServiceNow.Мне удалось отправить HTTP-запрос группам и создать карту соединителя (через входящий соединитель веб-подключения).Эта карта имеет действующее сообщение, которое выполнит HttpPOST обратно к пути процессора ServiceNow.В этом процессоре я смог получить заголовок авторизации, который содержит токен носителя, который, как я понимаю, является токеном JWT.Ниже приведены мои вопросы:

1) Должен ли я проверять этот токен JWT в целях безопасности?Я пытался сделать это, похоже, мне нужен общий секрет от MS Teams, которого у меня нет.2) Правильно ли я поступаю?Может быть, мне нужно настроить бота в MS Teams, который предоставляет идентификатор клиента и секрет, и вместо этого настроить OAuth в ServiceNow?

Я действительно ценю ваши отзывы!

1 Ответ

0 голосов
/ 09 октября 2018

Ознакомьтесь с Требования безопасности для активных сообщений в Office 365

Вот пример кода C # для Проверка токена :

HttpRequestMessage request = this.ActionContext.Request;

    // Validate that we have a bearer token.
    if (request.Headers.Authorization == null ||
        !string.Equals(request.Headers.Authorization.Scheme, "bearer", StringComparison.OrdinalIgnoreCase) ||
        string.IsNullOrEmpty(request.Headers.Authorization.Parameter))
    {
        return request.CreateErrorResponse(HttpStatusCode.Unauthorized, new HttpError());
    }

    // Get the token from the Authorization header 
    string bearerToken = request.Headers.Authorization.Parameter;

    ActionableMessageTokenValidator validator = new ActionableMessageTokenValidator();

    // This will validate that the token has been issued by Microsoft for the
    // specified target URL i.e. the target matches the intended audience (“aud” claim in token)
    // 
    // In your code, replace https://api.contoso.com with your service’s base URL.
    // For example, if the service target URL is https://api.xyz.com/finance/expense?id=1234,
    // then replace https://api.contoso.com with https://api.xyz.com
    ActionableMessageTokenValidationResult result = await validator.ValidateTokenAsync(bearerToken, "https://api.contoso.com");

    if (!result.ValidationSucceeded)
    {
        if (result.Exception != null)
        {
            Trace.TraceError(result.Exception.ToString());
        }

        return request.CreateErrorResponse(HttpStatusCode.Unauthorized, new HttpError());
    }
...