Ответы пользователя по тегу ASP.NET
  • Как интегрировать аутентификацию для Sharepoint 2013 из сайта на ASP.NET MVC 5 с ASP.NET Identity 2?

    zodchiy
    @zodchiy Автор вопроса
    Фуллстэк с 2005
    Реализовал так:
    - создал кастомный view web part
    - в настройках сайта Custom login page указал адрес своей view web part
    - воткнул в code-behind, не забыв добавить machinekey такой-же как и у сайта который является SSO-провайдером, код который дергает текущее имя пользователя
    private static string GetUserFromCoockie()
            {
                string username = "";
                var request = HttpContext.Current.Request;
                var cookie = request.Cookies.Get(".AspNet.ApplicationCookie");
                if(cookie == null) { return String.Empty; } //coockie is null!!!
                var ticket = cookie.Value;
                ticket = ticket.Replace('-', '+').Replace('_', '/');
                var padding = 3 - ((ticket.Length + 3) % 4);
                if (padding != 0)
                    ticket = ticket + new string('=', padding);
                var bytes = Convert.FromBase64String(ticket);
                try {
                bytes = System.Web.Security.MachineKey.Unprotect(bytes,
                    "Microsoft.Owin.Security.Cookies.CookieAuthenticationMiddleware",
                    "ApplicationCookie", "v1");
                }
                catch(Exception ex)
                {
                    return String.Empty; //u lost machine key!!! stupid idiot 
                }
                using (var memory = new MemoryStream(bytes))
                {
                    using (var compression = new GZipStream(memory, CompressionMode.Decompress))
                    {
                        using (var reader = new BinaryReader(compression))
                        {
                            reader.ReadInt32(); // Ignoring version here
                            string authenticationType = reader.ReadString();
                            reader.ReadString(); // Ignoring the default name claim type
                            reader.ReadString(); // Ignoring the default role claim type
                            int count = reader.ReadInt32(); // count of claims in the ticket
                            var claims = new Claim[count];
                            for (int index = 0; index != count; ++index)
                            {
                                string type = reader.ReadString();
                                type = type == "\0" ? ClaimTypes.Name : type;
                                string value = reader.ReadString();
                                string valueType = reader.ReadString();
                                valueType = valueType == "\0"
                                    ? "http://www.w3.org/2001/XMLSchema#string"
                                    : valueType;
                                string issuer = reader.ReadString();
                                issuer = issuer == "\0" ? "LOCAL AUTHORITY" : issuer;
                                string originalIssuer = reader.ReadString();
                                originalIssuer = originalIssuer == "\0" ? issuer : originalIssuer;
                                claims[index] = new Claim(type, value, valueType, issuer, originalIssuer);
                            }
    
                            var identity = new ClaimsIdentity(claims, authenticationType,
                                ClaimTypes.Name, ClaimTypes.Role);
                            username = identity.Name;
                        }
                    }
                    }
    
                return username;
            }

    - после этого пользователя авторизую
    - работает :)
    p.s. знаю, решение "в лоб", есть вопросы безопасности, но я решил, что если будет скопроментирован провайдер SSO, то и кому доверять тогда?
    p.p.s. если надо кому, могу и код авторизации пользователя выложить
    Ответ написан
    Комментировать
  • Как максимально быстро выучить ASP.NET MVC?

    zodchiy
    @zodchiy
    Фуллстэк с 2005
    Кроме www.asp.net/mvc есть куча онлайн-ресурсов на русском языке.
    Например - metanit.com/sharp/mvc5 , можно сказать там полный, но простой курс. Для того, чтобы войти в технологию хватит. Плюсом будет почитать - blog.foolsoft.ru/category/c , sergeyteplyakov.blogspot.ru , www.aspnet.com.ua/Category/developer-1.asp .
    В IoC контейнеры, asyn/await, паттерны лезть пока не надо, первоначально над осмотреть на EntityFramework, Ajax, JS.
    Этого будет достаточно. Остальное приложится в поисках решений на stackoverflow и гуглении.
    Ответ написан
    Комментировать
  • Как определить хорошего исполнителя ASP.NET?

    zodchiy
    @zodchiy
    Фуллстэк с 2005
    Количество и объем выполненных работ.
    Если в состоянии оценить качество кода, то и вопросов типа "как оценить" быть не должно.
    Ответ написан
    Комментировать
  • Посоветуйте литературу по ASP.NET и C#

    zodchiy
    @zodchiy
    Фуллстэк с 2005
    «C# 4.0 и платформа .NET 4 для профессионалов» Нейгел К., Ивьен Б., Глинн Дж., Уотсон К.
    Отличная книга, написанная простым и понятным языком, описаны все (1440 страниц!) — winforms, asp.net, asp.net mvc, silverlight, WPF, xml, службы, ado.net, работа с SQL-сервером и Entity framework.
    Приписки «для профессионалов» бояться не стоит, основам посвящены 900 страниц, очень подробно описано о ООП под C#, приемы программирования от простых обобщений до unsafe кода, все это подробно с удивительно внятными примерами.
    Ответ написан
    2 комментария