Реализация полной авторизации OAuth2.0 API в рамках проекта MVC - PullRequest
0 голосов
/ 25 сентября 2019

Позвольте мне начать с того, что я ученик.Я создал приложение, которое использует REST API Atlassian Jira для создания проблем с возможностью назначения пользователя для заявки.Базовая функциональность уже есть, но потом я обнаружил, что не могу использовать базовую авторизацию и мне нужно использовать OAuth 2.0.

Я уже потратил 10 часов, читая документы Jira, stackoverflow и просматриваяyoutube, о том, как использовать OAuth 2.0, и я не нашел четкой информации о том, как это сделать.

Мое приложение использует Azure Active Directory для авторизации, и в нем мне нужно реализовать OAuth 2.0 для Jira REST API..

Вот так выглядит мой код на данный момент

 [HttpPost]
    public  async Task<ActionResult> Index(TokenRequestBody model)
    {
        var user = await new UserProfileController().Index();

        var submitForm = new TokenRequestBody()
        {
            fields = new TokenRequestField()
            {
                project = model.fields.project,
                description = model.fields.description,
                summary = model.fields.summary,
                issuetype = model.fields.issuetype,
                assignee = model.fields.assignee,
                reporter = new ReporterName()
                {
                    name = user
                }
            },
        };

        using (var httpClient = new HttpClient())
        {              

            httpClient.DefaultRequestHeaders.Authorization =
                new AuthenticationHeaderValue(
                    "Basic", Convert.ToBase64String(
                        System.Text.ASCIIEncoding.ASCII.GetBytes(
                           $"user.com:password"))); 
            var httpRequestMessage = new HttpRequestMessage();
            httpRequestMessage.Method = HttpMethod.Post;
            httpRequestMessage.RequestUri = new Uri("https://domain.atlassian.net/rest/api/2/issue/");
            httpRequestMessage.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(submitForm), Encoding.UTF8, "application/json");
            var response = httpClient.SendAsync(httpRequestMessage).Result;

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

            var jiraResponse = JsonConvert.DeserializeObject<TicketResponseBody>(responseBody);

            TempData["Message"] = "Ticked Created";
            TempData["Id"] = jiraResponse.Id;
            TempData["Key"] = jiraResponse.Key;
            TempData["Self"] = jiraResponse.Self;

            return RedirectToAction("Index", "Home");
        }
    }

Я зарегистрировал свое приложение в jira, чтобы получить ссылку, которая после доступа и получения разрешения вернет ключ доступа в URL, что я должен использовать для запроса токена.Я считаю, что у меня есть все ингредиенты, чтобы сделать эту работу, но я не могу найти какие-либо полезные учебники для кого-то с моим небольшим опытом (около 4 месяцев).

...