Корреляция WIF с AuthorizeAttribute в MVC для ограничения доступа к определенным страницам

В моем приложении MVC я использую WIF. Я добавил ссылку STS, используя встроенный инструмент Visual Studio. FedUtil сгенерировал несколько записей в web.config:

<microsoft.identityModel>
    <service>
      <claimsAuthenticationManager type="Social.Core.Security.RolesAwareClaimsAuthenticationManager, Social.Core" />
      <audienceUris>
        <add value="http://app.something.com/" />
      </audienceUris>
...

Как видите, дополнительно я написал собственный ClaimsAuthenticationManager, чтобы добавить некоторые утверждения к уже полученным от STS.

Тем не менее, в приложении у меня есть страница с ограничениями:

public class ProfileController : BaseController
{
    [Authorize]
    public virtual ActionResult Index()
    {
        // restricted area
    }
}

Я добавил AuthorizeAttribute в действие с ограниченным доступом. Мне нужна аутентификация только при входе на app.something.com/profile/index. К сожалению, теперь форма входа отображается при входе в любую часть приложения, например на главную страницу app.something.com.

Как сопоставить аутентификацию WIF с AuthorizeAttribute и авторизовать только то, что мне нужно? Может быть, мне нужно добавить app.something.com/profile/index где-нибудь в web.config или в STS? Любые подсказки?


person jwaliszko    schedule 16.08.2012    source источник
comment
Вы уверены, что проблема связана с атрибутом [Authorize]? удалить его и проблема возникает?   -  person wal    schedule 16.08.2012
comment
Я не знаю, ясно ли вы понимаете, о чем я спрашиваю. Мейби мой вопрос не ясен. Я хотел бы просто заставить его работать с этим атрибутом (форма входа в систему, обслуживаемая WIF при доступе к действию с этим атрибутом) или, по крайней мере, ограничить доступ к определенной странице, а не ко всему сайту, без этого атрибута.   -  person jwaliszko    schedule 16.08.2012
comment
я подразумеваю, что этот конкретный атрибут не требует аутентификации вашей главной страницы. что-то другое делает это, как предполагает Волоски   -  person wal    schedule 16.08.2012


Ответы (1)


Когда вы запускаете ссылку «Добавить STS», мастер добавит раздел авторизации и запретит анонимным пользователям. Удалите это.

<authorization>
  <deny users="?" />
</authorization>
person woloski    schedule 16.08.2012