2016-10-13 6 views
2

Я не понял, как NSwag взаимодействует с токенами IdentityServerX и обычно добавляет заголовок запроса? Приложение my api для приложения реализует IdentityServer3 с LDAP-аутентификацией, насколько я понимаю; если какой-либо хост должен использовать токен для аутентификации, то любой клиент должен отправить его по заголовку запроса. Итак, как я могу справиться с этим при работе с клиентами NSwag?Как вызвать клиентский метод NSwag, которому нужен токен-носитель по заголовку запроса?

Любая идея оценена. Спасибо.

ответ

4

Я решил проблему частично методом. Мой пример:

CampaignClient.cs

public partial class CampaignClient 
{ 
    partial void PrepareRequest(HttpClient request, ref string url); 

    partial void ProcessResponse(HttpClient request, HttpResponseMessage response); 

    //some codes... 
} 

CampaignClient.Extensions.cs - частичный класс:

public partial class CampaignClient 
{ 
    private readonly IRequestContext _requestContext; 
    private readonly IStartupConfiguration _startupConfiguration; 

    public CampaignClient(IRequestContext requestContext, IStartupConfiguration startupConfiguration) 
    { 
     _requestContext = requestContext; 
     _startupConfiguration = startupConfiguration; 
    } 

    partial void PrepareRequest(HttpClient request, ref string url) 
    { 
     request.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _requestContext.GetBearerTokenOrTriggerUnauthException()); 
    } 
} 

Метод переопределения спас меня!

3

Для C# клиента вы можете specifcy UseHttpClientCreationMethod или UseHttpRequestMessageCreationMethod

(ср https://github.com/NSwag/NSwag/blob/master/src/NSwag.CodeGeneration/CodeGenerators/CSharp/SwaggerToCSharpClientGeneratorSettings.cs)

Таким образом NSwag ожидает Вас реализовать методы для создания HttpClient или HttpRequest. Вы можете установить свои заголовки там без магии

+0

как вы можете использовать это для SwaggerUi? – zuckerthoben

+0

Это опция для генератора клиентских ключей. насколько я знаю, чванство ui - это другое дело. Может быть, что swagger ui генерируется с использованием клиентского генератора, но я не уверен. Возможно, сделайте этот вопрос – Peter

+0

https://stackoverflow.com/questions/46236152/implement-jwtbearer-authentication-in-nswag-swaggerui @Peter – zuckerthoben