oidc
parent
9342d48c9d
commit
e85b41313f
@ -0,0 +1,3 @@
|
|||||||
|
@model string
|
||||||
|
|
||||||
|
Accès interdit : @model
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"dotnet": {
|
||||||
|
"projects": "*/project.json",
|
||||||
|
"enablePackageRestore": false
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"directory": "wwwroot/lib"
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNet.Mvc;
|
||||||
|
|
||||||
|
namespace testOauthClient.Controllers
|
||||||
|
{
|
||||||
|
public class HomeController : Controller
|
||||||
|
{
|
||||||
|
public IActionResult Index()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult About()
|
||||||
|
{
|
||||||
|
ViewData["Message"] = "Your application description page.";
|
||||||
|
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Contact()
|
||||||
|
{
|
||||||
|
ViewData["Message"] = "Your contact page.";
|
||||||
|
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Error()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
FROM microsoft/aspnet:1.0.0-rc1-update1
|
||||||
|
|
||||||
|
RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list
|
||||||
|
RUN apt-get -qq update && apt-get install -qqy sqlite3 libsqlite3-dev && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
|
WORKDIR /app
|
||||||
|
RUN ["dnu", "restore"]
|
||||||
|
|
||||||
|
EXPOSE 5000/tcp
|
||||||
|
ENTRYPOINT ["dnx", "-p", "project.json", "web"]
|
@ -0,0 +1,101 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNet.Builder;
|
||||||
|
using Microsoft.AspNet.Hosting;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.AspNet.Authentication.OpenIdConnect;
|
||||||
|
using Microsoft.AspNet.Authentication;
|
||||||
|
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
|
||||||
|
using Microsoft.AspNet.Http;
|
||||||
|
using Microsoft.AspNet.Authentication.Cookies;
|
||||||
|
|
||||||
|
namespace testOauthClient
|
||||||
|
{
|
||||||
|
public class Startup
|
||||||
|
{
|
||||||
|
public Startup(IHostingEnvironment env)
|
||||||
|
{
|
||||||
|
// Set up configuration sources.
|
||||||
|
var builder = new ConfigurationBuilder()
|
||||||
|
.AddJsonFile("appsettings.json")
|
||||||
|
.AddEnvironmentVariables();
|
||||||
|
Configuration = builder.Build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IConfigurationRoot Configuration { get; set; }
|
||||||
|
|
||||||
|
// This method gets called by the runtime. Use this method to add services to the container.
|
||||||
|
public void ConfigureServices(IServiceCollection services)
|
||||||
|
{
|
||||||
|
/* services.Configure<SharedAuthenticationOptions>(options =>
|
||||||
|
{
|
||||||
|
options.SignInScheme = "ClientCookie";
|
||||||
|
}); */
|
||||||
|
services.AddAuthentication(options => {
|
||||||
|
options.SignInScheme = "ClientCookie";
|
||||||
|
});
|
||||||
|
// Add framework services.
|
||||||
|
services.AddMvc();
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||||
|
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
|
||||||
|
{
|
||||||
|
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
|
||||||
|
loggerFactory.AddDebug();
|
||||||
|
|
||||||
|
if (env.IsDevelopment())
|
||||||
|
{
|
||||||
|
app.UseDeveloperExceptionPage();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
app.UseExceptionHandler("/Home/Error");
|
||||||
|
}
|
||||||
|
|
||||||
|
app.UseCookieAuthentication(new CookieAuthenticationOptions {
|
||||||
|
AutomaticAuthenticate = true,
|
||||||
|
AutomaticChallenge = true,
|
||||||
|
AuthenticationScheme = "ClientCookie",
|
||||||
|
CookieName = CookieAuthenticationDefaults.CookiePrefix + "ClientCookie",
|
||||||
|
ExpireTimeSpan = TimeSpan.FromMinutes(5),
|
||||||
|
LoginPath = new PathString("/signin"),
|
||||||
|
LogoutPath = new PathString("/signout")
|
||||||
|
});
|
||||||
|
|
||||||
|
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions {
|
||||||
|
RequireHttpsMetadata = false,
|
||||||
|
|
||||||
|
// Note: these settings must match the application details
|
||||||
|
// inserted in the database at the server level.
|
||||||
|
ClientId = "016c5ae4-f4cd-40e3-b250-13701c871ecd",
|
||||||
|
ClientSecret = "blahblah",
|
||||||
|
PostLogoutRedirectUri = "http://dev.pschneider.fr/",
|
||||||
|
|
||||||
|
// Use the authorization code flow.
|
||||||
|
ResponseType = OpenIdConnectResponseTypes.Code,
|
||||||
|
|
||||||
|
// Note: setting the Authority allows the OIDC client middleware to automatically
|
||||||
|
// retrieve the identity provider's configuration and spare you from setting
|
||||||
|
// the different endpoints URIs or the token validation parameters explicitly.
|
||||||
|
Authority = "http://dev.pschneider.fr/"
|
||||||
|
});
|
||||||
|
|
||||||
|
app.UseStaticFiles();
|
||||||
|
|
||||||
|
app.UseMvc(routes =>
|
||||||
|
{
|
||||||
|
routes.MapRoute(
|
||||||
|
name: "default",
|
||||||
|
template: "{controller=Home}/{action=Index}/{id?}");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Entry point for the application.
|
||||||
|
public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run<Startup>(args);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "About";
|
||||||
|
}
|
||||||
|
<h2>@ViewData["Title"].</h2>
|
||||||
|
<h3>@ViewData["Message"]</h3>
|
||||||
|
|
||||||
|
<p>Use this area to provide additional information.</p>
|
@ -0,0 +1,17 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Contact";
|
||||||
|
}
|
||||||
|
<h2>@ViewData["Title"].</h2>
|
||||||
|
<h3>@ViewData["Message"]</h3>
|
||||||
|
|
||||||
|
<address>
|
||||||
|
One Microsoft Way<br />
|
||||||
|
Redmond, WA 98052-6399<br />
|
||||||
|
<abbr title="Phone">P:</abbr>
|
||||||
|
425.555.0100
|
||||||
|
</address>
|
||||||
|
|
||||||
|
<address>
|
||||||
|
<strong>Support:</strong> <a href="mailto:Support@example.com">Support@example.com</a><br />
|
||||||
|
<strong>Marketing:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a>
|
||||||
|
</address>
|
@ -0,0 +1,30 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Home Page";
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="jumbotron">
|
||||||
|
@if (User?.Identity?.IsAuthenticated ?? false) {
|
||||||
|
<h1>Welcome, @User.Identity.Name</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
@foreach (var claim in Context.User.Claims) {
|
||||||
|
<div>@claim.Type: <b>@claim.Value</b></div>
|
||||||
|
}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(Model)) {
|
||||||
|
<h3>Message received from the resource controller: @Model</h3>
|
||||||
|
}
|
||||||
|
|
||||||
|
<form action="~/" method="post">
|
||||||
|
<button class="btn btn-lg btn-warning" type="submit">Query the resource controller</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<a class="btn btn-lg btn-danger" href="/signout">Sign out</a>
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
<h1>Welcome, anonymous</h1>
|
||||||
|
<a class="btn btn-lg btn-success" href="/signin">Sign in</a>
|
||||||
|
}
|
||||||
|
</div>
|
@ -0,0 +1,6 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
<h1 class="text-danger">Error.</h1>
|
||||||
|
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
@ -0,0 +1,67 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>@ViewData["Title"] - testOauthClient</title>
|
||||||
|
|
||||||
|
<environment names="Development">
|
||||||
|
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
|
||||||
|
<link rel="stylesheet" href="~/css/site.css" />
|
||||||
|
</environment>
|
||||||
|
<environment names="Staging,Production">
|
||||||
|
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.5/css/bootstrap.min.css"
|
||||||
|
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
|
||||||
|
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
|
||||||
|
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
|
||||||
|
</environment>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a asp-controller="Home" asp-action="Index" class="navbar-brand">testOauthClient</a>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-collapse collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a asp-controller="Home" asp-action="Index">Home</a></li>
|
||||||
|
<li><a asp-controller="Home" asp-action="About">About</a></li>
|
||||||
|
<li><a asp-controller="Home" asp-action="Contact">Contact</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="container body-content">
|
||||||
|
@RenderBody()
|
||||||
|
<hr />
|
||||||
|
<footer>
|
||||||
|
<p>© 2016 - testOauthClient</p>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<environment names="Development">
|
||||||
|
<script src="~/lib/jquery/dist/jquery.js"></script>
|
||||||
|
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
|
||||||
|
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||||
|
</environment>
|
||||||
|
<environment names="Staging,Production">
|
||||||
|
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"
|
||||||
|
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
|
||||||
|
asp-fallback-test="window.jQuery">
|
||||||
|
</script>
|
||||||
|
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.5/bootstrap.min.js"
|
||||||
|
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
|
||||||
|
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
|
||||||
|
</script>
|
||||||
|
<script src="~/js/site.min.js" asp-append-version="true"></script>
|
||||||
|
</environment>
|
||||||
|
|
||||||
|
@RenderSection("scripts", required: false)
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,2 @@
|
|||||||
|
@using testOauthClient
|
||||||
|
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
|
@ -0,0 +1,3 @@
|
|||||||
|
@{
|
||||||
|
Layout = "_Layout";
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"IncludeScopes": false,
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Verbose",
|
||||||
|
"System": "Information",
|
||||||
|
"Microsoft": "Information"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "testOauthClient",
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {
|
||||||
|
"bootstrap": "3.3.5",
|
||||||
|
"jquery": "2.1.4",
|
||||||
|
"jquery-validation": "1.14.0",
|
||||||
|
"jquery-validation-unobtrusive": "3.2.4"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
/// <binding Clean='clean' />
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var gulp = require("gulp"),
|
||||||
|
rimraf = require("rimraf"),
|
||||||
|
concat = require("gulp-concat"),
|
||||||
|
cssmin = require("gulp-cssmin"),
|
||||||
|
shell = require("gulp-shell"),
|
||||||
|
uglify = require("gulp-uglify");
|
||||||
|
|
||||||
|
var webroot = "./wwwroot/";
|
||||||
|
|
||||||
|
var paths = {
|
||||||
|
js: webroot + "js/**/*.js",
|
||||||
|
minJs: webroot + "js/**/*.min.js",
|
||||||
|
css: webroot + "css/**/*.css",
|
||||||
|
minCss: webroot + "css/**/*.min.css",
|
||||||
|
concatJsDest: webroot + "js/site.min.js",
|
||||||
|
concatCssDest: webroot + "css/site.min.css"
|
||||||
|
};
|
||||||
|
|
||||||
|
gulp.task("clean:js", function (cb) {
|
||||||
|
rimraf(paths.concatJsDest, cb);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task("clean:css", function (cb) {
|
||||||
|
rimraf(paths.concatCssDest, cb);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task("clean", ["clean:js", "clean:css"]);
|
||||||
|
|
||||||
|
gulp.task("min:js", function () {
|
||||||
|
return gulp.src([paths.js, "!" + paths.minJs], {
|
||||||
|
base: "."
|
||||||
|
})
|
||||||
|
.pipe(concat(paths.concatJsDest))
|
||||||
|
.pipe(uglify())
|
||||||
|
.pipe(gulp.dest("."));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task("min:css", function () {
|
||||||
|
return gulp.src([paths.css, "!" + paths.minCss])
|
||||||
|
.pipe(concat(paths.concatCssDest))
|
||||||
|
.pipe(cssmin())
|
||||||
|
.pipe(gulp.dest("."));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task("min", ["min:js", "min:css"]);
|
||||||
|
gulp.task('watch', shell.task(['MONO_OPTIONS=--debug ASPNET_ENV=Development dnx-watch web --configuration=Debug --server.urls=http://*:5002']))
|
||||||
|
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "testOauthClient",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"devDependencies": {
|
||||||
|
"gulp": "^3.9.0",
|
||||||
|
"gulp-concat": "2.5.2",
|
||||||
|
"gulp-cssmin": "0.1.7",
|
||||||
|
"gulp-uglify": "1.2.0",
|
||||||
|
"rimraf": "2.2.8"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0.0-*",
|
||||||
|
"compilationOptions": {
|
||||||
|
"emitEntryPoint": true
|
||||||
|
},
|
||||||
|
"tooling": {
|
||||||
|
"defaultNamespace": "testOauthClient"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-rc1-final",
|
||||||
|
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final"
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"web": "Microsoft.AspNet.Server.Kestrel"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"dnx451": {}
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"wwwroot",
|
||||||
|
"node_modules",
|
||||||
|
"bower_components"
|
||||||
|
],
|
||||||
|
"publishExclude": [
|
||||||
|
"node_modules",
|
||||||
|
"bower_components",
|
||||||
|
"**.xproj",
|
||||||
|
"**.user",
|
||||||
|
"**.vspscc"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"prepublish": [
|
||||||
|
"npm install",
|
||||||
|
"bower install",
|
||||||
|
"gulp clean",
|
||||||
|
"gulp min"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
body {
|
||||||
|
padding-top: 50px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wrapping element */
|
||||||
|
/* Set some basic padding to keep content from hitting the edges */
|
||||||
|
.body-content {
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set widths on the form inputs since otherwise they're 100% wide */
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
max-width: 280px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Carousel */
|
||||||
|
.carousel-caption p {
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}
|
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
Binary file not shown.
After Width: | Height: | Size: 8.1 KiB |
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1 @@
|
|||||||
|
// Write your Javascript code.
|
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<system.webServer>
|
||||||
|
<handlers>
|
||||||
|
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
|
||||||
|
</handlers>
|
||||||
|
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false"/>
|
||||||
|
</system.webServer>
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue