• Authorize by ClaimIdentity by Owin


    Authorize by ClaimIdentity by Owin

    1. Package needed
    • Owin
    • Microsoft.Owin.Security.OAuth
    • Microsoft.Owin.Security.Cookies
    • Microsoft.Owin
    • Microsoft.AspNet.WebApi.Owin
    1. Startup.cs definition
    [assembly:OwinStartup(typeof(GoldWebApi.App_Start.Startup))]
    namespace GoldWebApi.App_Start
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
            }
        }
    }
    
    1. By using Cookie
    • Add these function call in startup.cs
    app.UseCookieAuthentication(new CookieAuthenticationOptions
                {
                    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                    CookieHttpOnly = false,
                    CookieName = "Auth",
                    ExpireTimeSpan = TimeSpan.FromMinutes(1)
                });
    
    • Define this action webapi
     [HttpGet]
            public string Login(string userName,string passWord)
            {
                string realPassword = string.Empty;
                if(AccountDic.TryGetValue(userName,out realPassword))
                {
                    if (passWord == realPassword)
                    {
                        this.SignIn(HttpContext.Current.GetOwinContext().Authentication, this.CreateClaimIdentity(userName));
                        return "Authenticated";
                    }
                }
                return "Deny";
            }
    
             private void SignIn(IAuthenticationManager authenticationManger, ClaimsIdentity identity)
            {
                authenticationManger.SignIn(new AuthenticationProperties()
                {
                    ExpiresUtc = DateTime.UtcNow.AddMinutes(1),
                    IsPersistent = true
                }, identity);
            }
    
            private ClaimsIdentity CreateClaimIdentity(string userName)
            {
                return new ClaimsIdentity(new List<Claim>() { new Claim(ClaimTypes.Name, userName) }, DefaultAuthenticationTypes.ApplicationCookie);
            }
    

    4.By Token

    • Add these call in startup.cs
      app.UseOAuthBearerAuthentication(GoldWebApi.Controllers.AccountController.OAuthBearerOptions);
    • Add these definition in webapi
    [HttpGet]
            public string LoginByTicket(string userName,string passWord)
            {
                string realPassword = string.Empty;
                if (AccountDic.TryGetValue(userName, out realPassword))
                {
                    if (passWord == realPassword)
                    {
                        return this.GenerateTicket(this.CreateClaimIdentity(userName));
                    }
                }
                return "Deny";
            }
    
            private string GenerateTicket(ClaimsIdentity identity)
            {
                var ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
                ticket.Properties.IssuedUtc = DateTime.Now;
                ticket.Properties.ExpiresUtc = DateTime.Now.AddMinutes(1);
    
                return OAuthBearerOptions.AccessTokenFormat.Protect(ticket);
            }
    
    1. By Basic Authentication
    • package install: Thinktecture.IdentityModel.Owin.BasicAuthentication
    • Add these in startup.cs
    app.UseBasicAuthentication("localhost", ValidateUserCredential);
    
    public Task<IEnumerable<Claim>> ValidateUserCredential(string userName, string passWord)
            {
                return Task.FromResult<IEnumerable<Claim>>(new List<Claim>() { new Claim(ClaimTypes.Name, userName) });
            }
    

    Summary
    For all those Authentication mode, we can use Authorize Attribute in our webapi controller/action to apply the Authentication/Authorization. Owin will take the infrustructure job for us.

  • 相关阅读:
    Volatile变量学习
    又买了书
    java基础之类加载过程
    利用注解和POI导入Excel
    java异常简述
    Dubbo问题集
    day30 操作系统介绍 进程的创建
    day29 socketsever ftp功能简单讲解
    day28 黏包及黏包解决方案
    day27 网络通信协议 tcp/udp区别
  • 原文地址:https://www.cnblogs.com/kongshu-612/p/9436465.html
Copyright © 2020-2023  润新知