Получите претензии от STS и AngularJS

В настоящее время я использую ADFS в качестве STS, а проверяющие стороны реализованы с помощью ASP.NET MVC, которые настроены с помощью средства доступа к удостоверениям. Проверяющая сторона использует .NET WSFederationAuthenticationModule, поэтому я могу получить утверждения от вошедшего в систему пользователя с помощью

((System.Security.Claims.ClaimsPrincipal)User).Claims

Теперь я хочу переключиться на angularjs и спрашиваю себя, как этого добиться? Прежде всего, я хотел бы создать html-страницу angularjs на стороне сервера, чтобы я мог использовать механизм аутентификации из WSFederationAuthenticationModule.

Но я не знаю, как безопасно передать пользовательские претензии в мое приложение angularjs. Другой вопрос, который у меня есть, заключается в том, как я могу защитить вызовы webapi с текущим вошедшим в систему пользователем. На основании утверждений пользователей ему разрешено выполнять определенные вызовы webapi.

Я читал, что angularjs и webapi используют что-то вроде безопасного обмена токенами. Кто-то делал это раньше или вы можете дать мне несколько советов, как это реализовать?

Благодарность


person Amalia Wenzel    schedule 11.07.2014    source источник


Ответы (1)


Вы можете попробовать отобразить страницу, которая содержит размещенное приложение AngularJS с помощью Asp.NET MVC, и попробовать что-то вроде этого:

<script>
    @{var last = ((System.Security.Claims.ClaimsPrincipal)User).Claims.Last();}
    var user = {
    @foreach (var claim in ((System.Security.Claims.ClaimsPrincipal)User).Claims)
    {
        @claim.Type<text>:</text>@claim.Value if(claim!=last){<text>,</text>} @Environment.NewLine;
    }
    };
</script>

Этот код предназначен только для демонстрации. Вы должны зашифровать претензии. Для защиты webapi вы можете использовать аутентификацию токена веб-api с зашифрованными утверждениями.

Это не лучшее решение, но один из возможных способов реализовать свою цель.

person Briefkasten    schedule 22.07.2014