Как разрешить определенные источники, заголовки и методы CORS для запросов токенов OWIN?

Мы используем веб-API и OWIN для создания собственных поставщиков аутентификации и авторизации. Все это отлично работает, но теперь перед нами стоит задача разрешить запросы CORS.

CorsHttpConfigurationExtensions работает для нашего API, и мы также обработали запрос токена с помощью CorsExtensions. Но вот в чем дело: эта строка

 app.UseCors(CorsOptions.AllowAll);

в Startup.ConfigureAuth() разрешены все источники, элементы заголовков и методы, не так ли? Это эквивалент

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

в WebApiConfig.Configure() - верно? Существует только одно значение перечисления AllowAll для CorsOptions. И некуда украшать маршрут токена каким-либо атрибутом.

Меня не так волнуют заголовки и глаголы (методы); предположительно сборка OWIN обрабатывает их, например, ограничивая POST. Но мы действительно хотели бы ограничить заголовки происхождения определенными доменами. Кто-нибудь знает, как мы могли это сделать?


person BillyB    schedule 29.07.2014    source источник


Ответы (2)


using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
using Microsoft.Owin.Cors;
using System.Web.Cors;

[assembly: OwinStartup(typeof(SignalRSelfHost.Startup))]

namespace SignalRSelfHost
{
    public class Startup
    {

        public void Configuration(IAppBuilder app)
        {
            var policy = new CorsPolicy()
            {
                AllowAnyHeader = true,
                AllowAnyMethod = true,
                SupportsCredentials = true
            };

            // list of domains that are allowed can be added here
            policy.Origins.Add("domain"); 
            //be sure to include the port:
            //example: "http://localhost:8081"

            app.UseCors(new CorsOptions
            {
                PolicyProvider = new CorsPolicyProvider
                {
                    PolicyResolver = context => Task.FromResult(policy)
                }
            });

            app.MapSignalR();
        }
    }
}

Пожалуйста, обратитесь к этой ссылке

person Ravi Teja    schedule 11.12.2015

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

http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/

Надеюсь, это поможет.

person Omar.Alani    schedule 23.10.2014