This repository has been archived by the owner on May 29, 2019. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding a Start up class for OpenIdConnect authentication
- Loading branch information
Praburaj
committed
Jan 15, 2015
1 parent
b46bec1
commit 0f9173e
Showing
7 changed files
with
207 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
using System; | ||
using Microsoft.AspNet.Builder; | ||
using Microsoft.AspNet.Diagnostics; | ||
using Microsoft.AspNet.Diagnostics.Entity; | ||
using Microsoft.AspNet.Identity; | ||
using Microsoft.AspNet.Routing; | ||
using Microsoft.Framework.Cache.Memory; | ||
using Microsoft.Framework.ConfigurationModel; | ||
using Microsoft.Framework.DependencyInjection; | ||
using Microsoft.Framework.Logging; | ||
using Microsoft.Framework.Logging.Console; | ||
using MusicStore.Models; | ||
|
||
namespace MusicStore | ||
{ | ||
/// <summary> | ||
/// To make runtime to load an environment based startup class, specify the environment by the following ways: | ||
/// 1. Drop a Microsoft.AspNet.Hosting.ini file in the wwwroot folder | ||
/// 2. Add a setting in the ini file named 'ASPNET_ENV' with value of the format 'Startup[EnvironmentName]'. For example: To load a Startup class named | ||
/// 'StartupOpenIdConnect' the value of the env should be 'OpenIdConnect' (eg. ASPNET_ENV=OpenIdConnect). Runtime adds a 'Startup' prefix to this and loads 'StartupOpenIdConnect'. | ||
/// If no environment name is specified the default startup class loaded is 'Startup'. | ||
/// Alternative ways to specify environment are: | ||
/// 1. Set the environment variable named SET ASPNET_ENV=OpenIdConnect | ||
/// 2. For selfhost based servers pass in a command line variable named --env with this value. Eg: | ||
/// "commands": { | ||
/// "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002 --ASPNET_ENV OpenIdConnect", | ||
/// }, | ||
/// </summary> | ||
public class StartupOpenIdConnect | ||
{ | ||
public StartupOpenIdConnect() | ||
{ | ||
//Below code demonstrates usage of multiple configuration sources. For instance a setting say 'setting1' is found in both the registered sources, | ||
//then the later source will win. By this way a Local config can be overridden by a different setting while deployed remotely. | ||
Configuration = new Configuration() | ||
.AddJsonFile("config.json") | ||
.AddEnvironmentVariables(); //All environment variables in the process's context flow in as configuration values. | ||
} | ||
|
||
public IConfiguration Configuration { get; private set; } | ||
|
||
public void ConfigureServices(IServiceCollection services) | ||
{ | ||
//Sql client not available on mono | ||
var useInMemoryStore = Type.GetType("Mono.Runtime") != null; | ||
|
||
// Add EF services to the services container | ||
if (useInMemoryStore) | ||
{ | ||
services.AddEntityFramework(Configuration) | ||
.AddInMemoryStore() | ||
.AddDbContext<MusicStoreContext>(); | ||
} | ||
else | ||
{ | ||
services.AddEntityFramework(Configuration) | ||
.AddSqlServer() | ||
.AddDbContext<MusicStoreContext>(); | ||
} | ||
|
||
// Add Identity services to the services container | ||
services.AddIdentity<ApplicationUser, IdentityRole>(Configuration) | ||
.AddEntityFrameworkStores<MusicStoreContext>() | ||
.AddDefaultTokenProviders() | ||
.AddMessageProvider<EmailMessageProvider>() | ||
.AddMessageProvider<SmsMessageProvider>(); | ||
|
||
// Add MVC services to the services container | ||
services.AddMvc(); | ||
|
||
//Add all SignalR related services to IoC. | ||
services.AddSignalR(); | ||
|
||
//Add InMemoryCache | ||
services.AddSingleton<IMemoryCache, MemoryCache>(); | ||
} | ||
|
||
//This method is invoked when ASPNET_ENV is 'Development' or is not defined | ||
//The allowed values are Development,Staging and Production | ||
public void ConfigureDevelopment(IApplicationBuilder app, ILoggerFactory loggerFactory) | ||
{ | ||
loggerFactory.AddConsole(); | ||
|
||
//Display custom error page in production when error occurs | ||
//During development use the ErrorPage middleware to display error information in the browser | ||
app.UseErrorPage(ErrorPageOptions.ShowAll); | ||
|
||
app.UseDatabaseErrorPage(DatabaseErrorPageOptions.ShowAll); | ||
|
||
// Add the runtime information page that can be used by developers | ||
// to see what packages are used by the application | ||
// default path is: /runtimeinfo | ||
app.UseRuntimeInfoPage(); | ||
|
||
Configure(app); | ||
} | ||
|
||
public void Configure(IApplicationBuilder app) | ||
{ | ||
//Configure SignalR | ||
app.UseSignalR(); | ||
|
||
// Add static files to the request pipeline | ||
app.UseStaticFiles(); | ||
|
||
// Add cookie-based authentication to the request pipeline | ||
app.UseIdentity(); | ||
|
||
// Create an Azure Active directory application and copy paste the following | ||
// https://github.com/aspnet/Security/issues/113 | ||
app.UseOpenIdConnectAuthentication(options => | ||
{ | ||
options.Authority = "https://login.windows.net/[tenantName].onmicrosoft.com"; | ||
options.ClientId = "[ClientId]"; | ||
}); | ||
|
||
// Add MVC to the request pipeline | ||
app.UseMvc(routes => | ||
{ | ||
routes.MapRoute( | ||
name: "areaRoute", | ||
template: "{area:exists}/{controller}/{action}", | ||
defaults: new { action = "Index" }); | ||
routes.MapRoute( | ||
name: "default", | ||
template: "{controller}/{action}/{id?}", | ||
defaults: new { controller = "Home", action = "Index" }); | ||
routes.MapRoute( | ||
name: "api", | ||
template: "{controller}/{id?}"); | ||
}); | ||
|
||
//Populates the MusicStore sample data | ||
SampleData.InitializeMusicStoreDatabaseAsync(app.ApplicationServices).Wait(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,46 +1,47 @@ | ||
{ | ||
"authors": [ | ||
"Microsoft" | ||
], | ||
"description": "Music store application on ASP.NET 5", | ||
"version": "1.0.0-*", | ||
"compilationOptions": { "warningsAsErrors": true, "define": [ "DEMO", "TESTING" ] }, | ||
"code": [ | ||
"**/*.cs", | ||
"../../test/E2ETests/compiler/shared/**/*.cs" // This code is for testing only. | ||
], | ||
"packExclude": "*.cmd", | ||
"webroot": "wwwroot", | ||
"dependencies": { | ||
"EntityFramework.SqlServer": "7.0.0-*", | ||
"EntityFramework.InMemory": "7.0.0-*", // For Mono. | ||
"Kestrel": "1.0.0-*", | ||
"Microsoft.AspNet.Diagnostics": "1.0.0-*", | ||
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-*", | ||
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-*", | ||
"Microsoft.AspNet.Mvc": "6.0.0-*", | ||
"Microsoft.AspNet.Security.Cookies": "1.0.0-*", | ||
"Microsoft.AspNet.Security.Facebook": "1.0.0-*", | ||
"Microsoft.AspNet.Security.Google": "1.0.0-*", | ||
"Microsoft.AspNet.Security.MicrosoftAccount": "1.0.0-*", | ||
"Microsoft.AspNet.Security.Twitter": "1.0.0-*", | ||
"Microsoft.AspNet.Server.IIS": "1.0.0-*", | ||
"Microsoft.AspNet.Server.WebListener": "1.0.0-*", | ||
"Microsoft.AspNet.SignalR.Server": "3.0.0-*", | ||
"Microsoft.AspNet.StaticFiles": "1.0.0-*", | ||
"Microsoft.Framework.Cache.Memory": "1.0.0-*", | ||
"Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-*", | ||
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-*", | ||
"Microsoft.Framework.Logging.Console": "1.0.0-*" | ||
}, | ||
"commands": { | ||
"gen": "Microsoft.Framework.CodeGeneration", | ||
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004", | ||
"run": "run server.urls=http://localhost:5003", | ||
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002" | ||
}, | ||
"frameworks": { | ||
"aspnet50": { }, | ||
"aspnetcore50": { } | ||
} | ||
"authors": [ | ||
"Microsoft" | ||
], | ||
"description": "Music store application on ASP.NET 5", | ||
"version": "1.0.0-*", | ||
"compilationOptions": { "warningsAsErrors": true, "define": [ "DEMO", "TESTING" ] }, | ||
"code": [ | ||
"**/*.cs", | ||
"../../test/E2ETests/compiler/shared/**/*.cs" // This code is for testing only. | ||
], | ||
"packExclude": "*.cmd", | ||
"webroot": "wwwroot", | ||
"dependencies": { | ||
"EntityFramework.SqlServer": "7.0.0-*", | ||
"EntityFramework.InMemory": "7.0.0-*", // For Mono. | ||
"Kestrel": "1.0.0-*", | ||
"Microsoft.AspNet.Diagnostics": "1.0.0-*", | ||
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-*", | ||
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-*", | ||
"Microsoft.AspNet.Mvc": "6.0.0-*", | ||
"Microsoft.AspNet.Security.Cookies": "1.0.0-*", | ||
"Microsoft.AspNet.Security.Facebook": "1.0.0-*", | ||
"Microsoft.AspNet.Security.Google": "1.0.0-*", | ||
"Microsoft.AspNet.Security.MicrosoftAccount": "1.0.0-*", | ||
"Microsoft.AspNet.Security.OpenIdConnect": "1.0.0-*", | ||
"Microsoft.AspNet.Security.Twitter": "1.0.0-*", | ||
"Microsoft.AspNet.Server.IIS": "1.0.0-*", | ||
"Microsoft.AspNet.Server.WebListener": "1.0.0-*", | ||
"Microsoft.AspNet.SignalR.Server": "3.0.0-*", | ||
"Microsoft.AspNet.StaticFiles": "1.0.0-*", | ||
"Microsoft.Framework.Cache.Memory": "1.0.0-*", | ||
"Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-*", | ||
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-*", | ||
"Microsoft.Framework.Logging.Console": "1.0.0-*" | ||
}, | ||
"commands": { | ||
"gen": "Microsoft.Framework.CodeGeneration", | ||
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004", | ||
"run": "run server.urls=http://localhost:5003", | ||
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002" | ||
}, | ||
"frameworks": { | ||
"aspnet50": { }, | ||
"aspnetcore50": { } | ||
} | ||
} |