2014-05-08 2 views
0

Я новичок в OWIN и хочу узнать, можно ли изменить ClientId & Клиентский секрет в нашем классе запуска на основе URL-адреса? Мы используем OWIN на сайте с несколькими арендаторами и действительно нуждаемся в решении для этого.Owin: ExternalLogin clientId & secret, основанный на URL-адресе

ответ

0

Я не уверен, что вы имеете в виду - где бы вы хотели изменить секретность ClientID и Client? О стороннем поставщике или локально? Можете ли вы немного уточнить, пожалуйста?

Это может или не может работать - хотя я не видим причин, почему это не должно:

if(System.Web.HttpContext.Current.Request.RawUrl == "YourUrlHere") 
      { 

      var fbOptions = new FacebookAuthenticationOptions 
      { 
       AppId = "etcetc", 
       AppSecret = "etcetc" 
      }; 
} 
else if(etc. etc.) 
{ 
} 
+0

Хотите изменить он локально в нашем классе запуска – user3219798

+0

Не думаю, что ваш класс запуска может измениться после запуска вашего приложения - поскольку он отвечает за создание промежуточного ПО OWIN, которое обрабатывает вашу аутентификацию, если это то, о чем вы просите, - так как для использования разных ключей на основе URL. Я думаю, вы можете установить это в своем файле конфигурации, чтобы URL-адрес был выбран, когда приложение запускается впервые, но я не думаю, что вы можете сделать это динамически. Я могу ошибаться, но я не думаю, что ты можешь. –

+0

RawUrl - это просто «/» (косая черта), а Request.Url появляется как http://127.0.0.1/, хотя сайт работает на http: // localhost: 64827/ – user3219798

1

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

Хотя ничто не мешает вам изменение этого значения после того, как приложение запускается, его определенно не потокобезопасны сделать это (так как это фактически общий глобальный объект)

К сожалению, вы не можете изменить это поведение либо так эти реализации все обозначены внутренними и жестко закодированы, чтобы вытащить appecret/id из этого объекта опций.

См: https://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.Facebook/FacebookAuthenticationHandler.cs

string tokenRequest = "grant_type=authorization_code" + 
    "&code=" + Uri.EscapeDataString(code) + 
    "&redirect_uri=" + Uri.EscapeDataString(redirectUri) + 
    "&client_id=" + Uri.EscapeDataString(Options.AppId) + 
    "&client_secret=" + Uri.EscapeDataString(Options.AppSecret); 

, кажется, единственный вариант должен быть взять копию кода (так как он является открытым исходным кодом) и изменять поведение в соответствии с вашими потребностями

Смежные вопросы