mirror of
https://github.com/bitwarden/server.git
synced 2025-07-17 23:50:58 -05:00
[PM-17562] Add support for Auth on Webhook integration requests (#5970)
* [PM-17562] Update documentation for event integrations * Fix SonarQube suggestion, bring ASB event listener in line with integration listener * Apply suggestions from code review Co-authored-by: Matt Bishop <mbishop@bitwarden.com> * Updates to README - PR fixes, additional context, tense alignment * Add links to different sections; remove inline code formatting in favor of single bacticks for JSON * [PM-17562] Add aupport for Auth on Webhook integration requests * Repsond to PR feedback - move optional params to end, add tests for optional cases --------- Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
This commit is contained in:
@ -2,4 +2,4 @@
|
||||
|
||||
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
|
||||
|
||||
public record SlackIntegration(string token);
|
||||
public record SlackIntegration(string Token);
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
|
||||
|
||||
public record SlackIntegrationConfiguration(string channelId);
|
||||
public record SlackIntegrationConfiguration(string ChannelId);
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
|
||||
|
||||
public record SlackIntegrationConfigurationDetails(string channelId, string token);
|
||||
public record SlackIntegrationConfigurationDetails(string ChannelId, string Token);
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
|
||||
|
||||
public record WebhookIntegrationConfiguration(string url);
|
||||
public record WebhookIntegrationConfiguration(string Url, string? Scheme = null, string? Token = null);
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
namespace Bit.Core.AdminConsole.Models.Data.EventIntegrations;
|
||||
|
||||
public record WebhookIntegrationConfigurationDetails(string url);
|
||||
public record WebhookIntegrationConfigurationDetails(string Url, string? Scheme = null, string? Token = null);
|
||||
|
@ -11,9 +11,9 @@ public class SlackIntegrationHandler(
|
||||
public override async Task<IntegrationHandlerResult> HandleAsync(IntegrationMessage<SlackIntegrationConfigurationDetails> message)
|
||||
{
|
||||
await slackService.SendSlackMessageByChannelIdAsync(
|
||||
message.Configuration.token,
|
||||
message.Configuration.Token,
|
||||
message.RenderedTemplate,
|
||||
message.Configuration.channelId
|
||||
message.Configuration.ChannelId
|
||||
);
|
||||
|
||||
return new IntegrationHandlerResult(success: true, message: message);
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
using System.Globalization;
|
||||
using System.Net;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
using Bit.Core.AdminConsole.Models.Data.EventIntegrations;
|
||||
|
||||
@ -20,8 +21,16 @@ public class WebhookIntegrationHandler(
|
||||
|
||||
public override async Task<IntegrationHandlerResult> HandleAsync(IntegrationMessage<WebhookIntegrationConfigurationDetails> message)
|
||||
{
|
||||
var content = new StringContent(message.RenderedTemplate, Encoding.UTF8, "application/json");
|
||||
var response = await _httpClient.PostAsync(message.Configuration.url, content);
|
||||
var request = new HttpRequestMessage(HttpMethod.Post, message.Configuration.Url);
|
||||
request.Content = new StringContent(message.RenderedTemplate, Encoding.UTF8, "application/json");
|
||||
if (!string.IsNullOrEmpty(message.Configuration.Scheme))
|
||||
{
|
||||
request.Headers.Authorization = new AuthenticationHeaderValue(
|
||||
scheme: message.Configuration.Scheme,
|
||||
parameter: message.Configuration.Token
|
||||
);
|
||||
}
|
||||
var response = await _httpClient.SendAsync(request);
|
||||
var result = new IntegrationHandlerResult(success: response.IsSuccessStatusCode, message);
|
||||
|
||||
switch (response.StatusCode)
|
||||
|
Reference in New Issue
Block a user