Как получить правильный токен для веб-API из приложения-функции Azure или Javascript? - PullRequest
1 голос
/ 14 июня 2019

У нас есть веб-сервис, который требует аутентификации перед использованием. Когда вы вводите URL-адрес веб-службы прямо в браузере, все работает нормально. Однако, если вы попытаетесь вызвать этот же сервис из Javascript, он не будет работать, потому что аутентификация еще не произошла.

Я пытался вызвать getAccessTokenAsync (это часть библиотеки OfficeJS), но в итоге получил одну из этих 1300x ошибок. Кроме того, поскольку этот вызов все еще находится в режиме предварительного просмотра, я бы хотел его избежать.

Приведенный ниже код вызывается при вводе URL-адреса веб-службы непосредственно в окнах браузера. Вы аутентифицированы и все работает нормально.

Я просто не знаю, как выполнить эквивалентную аутентификацию из приложения-функции Azure или из Javascript (из веб-надстройки)

public partial class AuthStartup
{
    public void Configuration(IAppBuilder app)
    {
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
        // This part is for web sso so web pages can consume the API without obtaining a token
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                // http://www.cloudidentity.com/blog/2014/11/17/skipping-the-home-realm-discovery-page-in-azure-ad/
                Notifications = new WsFederationAuthenticationNotifications
                {
                    RedirectToIdentityProvider = (context) =>
                    {
                        context.ProtocolMessage.Whr = "ourcompany.com";// similar effect to domain_hint from client so users never see the "choose account" prompt
                        return Task.FromResult(0);
                    }
                },

                MetadataAddress = ConfigurationManager.AppSettings["ida:MetadataAddress"],
                Wtrealm = ConfigurationManager.AppSettings["ida:Audience"],
                // this part is needed so that cookie and token auth can coexist
                TokenValidationParameters = new TokenValidationParameters
                {
                    ValidAudiences = new string[] { $"spn:{ConfigurationManager.AppSettings["ida:Audience"]}" }
                }
            });

        // This part is for bearer token authentication
        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                TokenValidationParameters = new TokenValidationParameters
                {
                    ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
                },
                MetadataAddress = ConfigurationManager.AppSettings["ida:MetadataAddress"],
            });

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