Безопасность веб-панели CruiseControl.net
У меня экстремальные проблемы с добавлением защиты на веб-панель. Я пытаюсь настроить безопасность для нескольких проектов веб-приложений. Все работает без включенной безопасности.
Безопасность, которую я хочу, довольно проста. 2 роли "Релизеры" и "Тестеры", релизеры могут делать что угодно, тестеры могут принудительно создавать проект развертывания тестов и просматривать только остальные проекты, которые все обновляют живые установки. Однако я просто не могу заставить его работать. Для начала я думаю, что я только что позволил все для всех, и у меня есть несколько разных проблем в зависимости от того, как я настроил различные вещи. Во всех случаях файл конфигурации проверяется с помощью утилиты validator.
Конфигурация сервера
<internalSecurity>
<users>
<ldapUser name="ccnet" domain="localhost" />
<passwordUser name="ccnetadmin" password="NotTheRealPW" />
</users>
<permissions>
<rolePermission name="Releasers" defaultRight="Allow">
<users>
<userName name="ccnetadmin"/>
</users>
</rolePermission>
<rolePermission name="Testers" defaultRight="Allow">
<users>
<userName name="ccnet"/>
</users>
</rolePermission>
</permissions>
</internalSecurity>
Безопасность проекта
<security type="defaultProjectSecurity" defaultRight="Inherit">
<permissions>
<rolePermission name="Testers" ref="Testers"/>
<rolePermission name="Releasers" ref="Releasers"/>
</permissions>
</security>
Dashboard.config
Есть 3 вещи, которые не понятны из документации.
- Какой тип проверки подлинности необходимо настроить в IIS.
- Каких пользователей мне нужно настроить в разделе безопасности сервера ccnet.config.
- В конфиге приборной панели, что мне нужно в
<securityPlugins>
раздел.
Я пробовал формы и окна, интегрированные в web.config и в iis. С формами по существу жалуется, что нет login.aspx, чего нет, поэтому я подозреваю, что это правильно. С интегрированными окнами я могу получить доступ к приборной панели. Любые проекты, у которых нет элемента безопасности, который я вижу в списке, но любое действие приводит к исключению безопасности, говоря, что у меня нет разрешения ViewProject. Любые проекты, которые имеют элемент безопасности, просто не отображаются в списке. Я получаю такое же поведение, какой бы тип пользователя я не использовал, simpleUser, passwordUser или ldapUser. Я не могу найти нигде, где упоминается любая другая ценность, которую я могу поставить в securityPlugins
В разделе, отличном от simpleSecurity, есть ли другие значения и если да, то каковы они?
Я искал эту документацию и не могу найти ответы ни на один из этих вопросов.
РЕДАКТИРОВАТЬ
Тот, кто может предложить то, что я могу достичь нижеприведенной цели, получает награду, даже если это совершенно другой способ, чем я описал выше.
Мне нужен набор пользователей, которые могут просматривать все проекты CC.net и принудительно создавать 1 конкретный проект. Я хочу другой набор пользователей, которые могут просматривать и принудительно создавать все проекты. Я хочу, чтобы это было с одной единственной панелью управления cc.net, одним файлом конфигурации, но с разными учетными записями пользователей.
РЕДАКТИРОВАТЬ 2
Поскольку щедрость скоро заканчивается, я также дам ее любому, кто сможет предложить какое-то убедительное доказательство того, что безопасность в cc.net не работает, поэтому, по крайней мере, я знаю, что больше не буду тратить на это свое время. Кроме того, я попытался зарегистрировать проблему или опубликовать сообщение об этом на форуме cc.net, но они, похоже, перешли на новую систему, и это, похоже, тоже не работает, просто не позволит вам подписаться на учетная запись пользователя, она требует проверки электронной почты, но электронная почта не приходит.
2 ответа
ОК, я наконец-то решил это. Все было настроено идеально. Однако то, что документация не упоминает вообще, КАК ВОЙТИ. Какую безопасность вы настраиваете в iis / web.config. Ответ на этот вопрос не имеет значения, так как cc.net не использует ни один из этих видов безопасности. В упомянутой документации включены входы в систему путем добавления <securityPlugins>
раздел конфигурации панели управления с элементом для "включения входа". Но в нем не упоминалось, как войти в систему. Я только что заметил, что если в веб-панели управления вы выбираете сервер из списка, он дает вам кнопку входа. Дело в том, что я редко смотрю отчет сервера, у меня есть только 1 сервер, поэтому "отчет фермы" - это тот же список проектов, что и "отчет сервера", и он просто кажется бессмысленным. Но кнопка входа появляется только в том случае, если вы просматриваете отчет сервера. Я чувствую себя немного глупо, но просто - "вы не можете войти в систему из отчета фермы; вам нужно выбрать отчет сервера для входа" - в документах я бы сэкономил буквально дни разочарования. То есть мне потребовались дни, чтобы найти кровавую кнопку входа в систему.
Мне тоже было бы любопытно, и я снова попытаюсь это выяснить, но в прошлый раз, когда я пытался, я тоже был в тупике.
Мой временный обходной путь состоял в том, чтобы настроить web.config, чтобы определить, кто имеет доступ к CC.NET только для запросов GET, а кто имеет доступ вообще (включая запросы POST, необходимые для любых начальных действий).
<configuration>
<system.web>
<authorization>
<allow verbs="GET" roles="DOMAIN\ccnetreadonly" />
<allow roles="DOMAIN\ccnetcanperformactions" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
Не самый лучший, но это сработало...