1. 程式人生 > >Owin 不用/Token,獲取Access Token

Owin 不用/Token,獲取Access Token

  [AllowAnonymous]
        [HttpGet]
        public async Task<IHttpActionResult> RegisterUser()
        {
            ApplicationUser user1 = await UserManager.FindAsync("Allen", "123456");
            ClaimsIdentity oAuthIdentity = await user1.GenerateUserIdentityAsync(UserManager, OAuthDefaults.AuthenticationType);
            AuthenticationProperties properties = CreateProperties(user1.UserName);
            AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
            var token=Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket);

            return Ok(token);

    }

 public partial class Startup
    {
        public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
        public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; private set; }
        public static string PublicClientId { get; private set; }


        // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
        public void ConfigureAuth(IAppBuilder app)
        {
            // Configure the db context and user manager to use a single instance per request
            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);


            // Enable the application to use a cookie to store information for the signed in user
            // and to use a cookie to temporarily store information about a user logging in with a third party login provider
            //app.UseCookieAuthentication(new CookieAuthenticationOptions());
            //app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);


            // Configure the application for OAuth based flow
            PublicClientId = "self";
            OAuthBearerOptions = new OAuthBearerAuthenticationOptions();
            OAuthOptions = new OAuthAuthorizationServerOptions
            {
                TokenEndpointPath = new PathString("/Token"),
                Provider = new ApplicationOAuthProvider(PublicClientId),
                //AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(999),
                // In production mode set AllowInsecureHttp = false
                AllowInsecureHttp = true
            };
            app.UseOAuthBearerAuthentication(OAuthBearerOptions);
            // Enable the application to use bearer tokens to authenticate users
            app.UseOAuthBearerTokens(OAuthOptions);




            // Uncomment the following lines to enable logging in with third party login providers
            //app.UseMicrosoftAccountAuthentication(
            //    clientId: "",
            //    clientSecret: "");


            //app.UseTwitterAuthentication(
            //    consumerKey: "",
            //    consumerSecret: "");


            //app.UseFacebookAuthentication(
            //    appId: "",
            //    appSecret: "");


            //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
            //{
            //    ClientId = "",
            //    ClientSecret = ""
            //});
        }
    }