ASP.NET web API 2 прокси-сервер аутентификации / авторизации - PullRequest
0 голосов
/ 27 февраля 2019

Мне нужны ваши советы и опыт.Вот мой сценарий.

  • Существует поставщик веб-API Rest.(Хост) (назовем это A)
  • Есть клиенты, которые собираются использовать 2 метода провайдера A.
  • Я реализую прокси-сервер Rest ASP.NET web API 2 между провайдерамиA и клиенты.
  • У провайдера A уже есть аутентификация на основе токенов.
  • Существует метод инициализации провайдера A, которому я отправляю подпись, состоящую из секретного ключа, предоставленного мне снекоторая другая информация, MD5 хэшированная.
  • Я думаю, что эта подпись проверена в поставщике A и возвращает токен, если он действителен.(Время истечения 20 минут)
  • И с этим токеном я вызываю второй метод провайдера и заканчиваю свой процесс.

Теперь мои вопросы:

  • Должен ли я по-прежнему иметь механизм аутентификации / авторизации для моего прокси?и почему?
  • Могу ли я изменить TokenEndpointPath?(AspNetWebAPIOAuth.OAuth.Startup) На самом деле, я не хочу, чтобы клиент сделал дополнительный вызов службы.Могу ли я установить путь для существующего действия контроллера?

Вот мое действие контроллера, откуда я хотел бы вернуть токен.Я хочу установить токен в объект Initiate.

[HttpPost, Route("initiation")]
    public async Task<IHttpActionResult> PostInitiate(InitiateRequest initiate)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        context.InitiatesRequests.Add(initiate);
        await context.SaveChangesAsync();

        HttpClient httpClient = new HttpClient();


        HttpContent content = new StringContent(
            JsonConvert.SerializeObject(initiate),
            Encoding.UTF8,
            "application/json"
        );


        HttpResponseMessage response =
            await httpClient.PostAsync("https://test.com/purchaseinitiation", content);

        string htmlResponse = await response.Content.ReadAsStringAsync();

        return Ok(htmlResponse);
    }

Могу ли я вернуть сгенерированный токен в моем существующем методе контроллера, как я упоминал в моем примере кода?Возможно ли это?

Вот мой собственный путь к конечной точке токена, который является моим существующим действием контроллера ниже.

OAuthOptions = new OAuthAuthorizationServerOptions{
TokenEndpointPath = new PathString("/api/v2/pin/initiation"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true};

Вот мой контроллер, где я хотел бы вернуть токен внутриinitiate.

[RoutePrefix("api/v2/pin")]
public class InitiatesController : ApiController
{
    private EPINMiddleWareAPIContext context;

    public InitiatesController(EPINMiddleWareAPIContext context)
    {
        this.context = context;
    }


    // POST: api/Game
    [HttpPost, Route("initiation")]
    public async Task<IHttpActionResult> PostInitiate(InitiateRequest initiate)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

Примечание. Поставщик A, клиенты и веб-API моего прокси-сервера будут взаимодействовать на основе SSL.

EdiT: Я использовал проверку подлинности на основе токена и решилкак вернуть токен внутри моего ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...