Кортана - OAuth 2 подключенный сервис

Мы создали поставщика OAuth2 в качестве службы приложения, как показано в примере ниже.

https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server

Шаг 2:

Нам необходимо настроить эти конечные точки для конечных точек OAuth2 подключенного сервиса Cortana, чтобы получить токен доступа из приложения Cortana

Cortana Auth Config

Пример кода в функции авторизации провайдера Auth приведен ниже:

public ActionResult Login()
    {
        var authentication = HttpContext.GetOwinContext().Authentication;
        if (Request.HttpMethod == "POST")
        {
            var isPersistent = !string.IsNullOrEmpty(Request.Form.Get("isPersistent"));

            if (!string.IsNullOrEmpty(Request.Form.Get("submit.Signin")))
            {
                authentication.SignIn(
                    new AuthenticationProperties { IsPersistent = isPersistent },
                    new ClaimsIdentity(new[] { new Claim(ClaimsIdentity.DefaultNameClaimType, Request.Form["username"]) }, "Application"));
            }
        }

       return View();
      //  Response.End();
    }

санкционировать

 public ActionResult Authorize()
    {
        if (Response.StatusCode != 200)
        {
            return View("AuthorizeError");
        }


        var authentication = HttpContext.GetOwinContext().Authentication;
        var ticket = authentication.AuthenticateAsync("Application").Result;
        var identity = ticket != null ? ticket.Identity : null;
        if (identity == null)
        {
            authentication.Challenge("Application");
            return new HttpUnauthorizedResult();
        }

        var scopes = (Request.QueryString.Get("scope") ?? "").Split(' ');

        if (Request.HttpMethod == "POST")
        {
             if (!string.IsNullOrEmpty(Request.Form.Get("submit.Grant")))
             {
                identity = new ClaimsIdentity(identity.Claims, "Bearer", identity.NameClaimType, identity.RoleClaimType);
                foreach (var scope in scopes)
                {
                    identity.AddClaim(new Claim("urn:oauth:scope", scope));
                }
                authentication.SignIn(identity);


            }
            //if (!string.IsNullOrEmpty(Request.Form.Get("submit.Login")))
            //{
            //    authentication.SignOut("Application");
            //    authentication.Challenge("Application");
            //    return new HttpUnauthorizedResult();
            //}
        }

        return View();
    }

Я хочу изменить этот код таким образом, чтобы он мог отправлять данные обратно на канал Cortana. Пожалуйста, дайте знать ваши предложения.

Спасибо

0 ответов

Другие вопросы по тегам