Skip to content
This repository has been archived by the owner on Sep 8, 2020. It is now read-only.

Commit

Permalink
adapted to apis to pass compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
Henry Chu committed Aug 20, 2017
1 parent e388801 commit 4d2e6b1
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 27 deletions.
2 changes: 1 addition & 1 deletion src/Obsidian/AuthenticationSchemes.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace Obsidian
{
public static class AuthenticationSchemes
public static class ObsidianAuthenticationSchemes
{
public const string OAuth20Cookie = "Obsidian.OAuth20.Cookie";
public const string Bearer = "Bearer";
Expand Down
2 changes: 1 addition & 1 deletion src/Obsidian/Authorization/RequireAccessTokenAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public RequireAccessTokenAttribute() : this("")

public RequireAccessTokenAttribute(string policy) : base(policy)
{
ActiveAuthenticationSchemes = AuthenticationSchemes.Bearer;
AuthenticationSchemes = ObsidianAuthenticationSchemes.Bearer;
}
}
}
8 changes: 4 additions & 4 deletions src/Obsidian/Controllers/OAuth/OAuth20Controller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
namespace Obsidian.Controllers.OAuth
{
[ApiExplorerSettings(IgnoreApi = true)]
[Authorize(ActiveAuthenticationSchemes = AuthenticationSchemes.OAuth20Cookie)]
[Authorize(AuthenticationSchemes = ObsidianAuthenticationSchemes.OAuth20Cookie)]
public class OAuth20Controller : Controller
{
private const string ProtectorKey = "Obsidian.OAuth.Context.Key";
Expand Down Expand Up @@ -139,7 +139,7 @@ public async Task<IActionResult> PermissionGrant([FromForm]PermissionGrantModel
[ValidateModel]
public async Task<IActionResult> SignOut([FromQuery(Name = "redurect_uri"), Url]string redirectUri)
{
await _signinService.CookieSignOutCurrentUserAsync(AuthenticationSchemes.OAuth20Cookie);
await _signinService.CookieSignOutCurrentUserAsync(ObsidianAuthenticationSchemes.OAuth20Cookie);
return Redirect(redirectUri);
}

Expand All @@ -157,7 +157,7 @@ public async Task<IActionResult> SignOut([FromForm]OAuthSignOutModel model)
switch (result.State)
{
case OAuth20State.Cancelled:
await _signinService.CookieSignOutCurrentUserAsync(AuthenticationSchemes.OAuth20Cookie);
await _signinService.CookieSignOutCurrentUserAsync(ObsidianAuthenticationSchemes.OAuth20Cookie);
return Redirect(CancelRedirectUrl(result.CancelData));

default:
Expand Down Expand Up @@ -278,7 +278,7 @@ private async Task<AuthenticationResult> PasswordAutnenticateAsync(string userNa

private async Task<IActionResult> OAuth20SignInCore(Guid sagaId, User user, bool isPersistent)
{
await _signinService.CookieSignInAsync(AuthenticationSchemes.OAuth20Cookie, user, isPersistent);
await _signinService.CookieSignInAsync(ObsidianAuthenticationSchemes.OAuth20Cookie, user, isPersistent);

var message = new OAuth20SignInMessage(sagaId, user);

Expand Down
26 changes: 11 additions & 15 deletions src/Obsidian/IdentityConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,45 +13,41 @@ namespace Obsidian
{
public static class IdentityConfig
{
public static IApplicationBuilder ConfigJwtAuthentication(this IApplicationBuilder app,
IOptions<OAuth20Configuration> oauthOptions,
public static void ConfigJwtAuthentication(this IServiceCollection services,
IOptions<OAuth20Configuration> oauthOptions,
RsaSigningService signingService)
{
var oauthConfig = oauthOptions.Value;
var signingKey = new RsaSecurityKey(signingService.GetPublicKey());
var param = new TokenValidationParameters
{
AuthenticationType = AuthenticationSchemes.Bearer,
AuthenticationType = ObsidianAuthenticationSchemes.Bearer,
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey,
ValidateIssuer = true,
ValidIssuer = oauthConfig.TokenIssuer,
ValidAudience = oauthConfig.TokenAudience
};

app.UseJwtBearerAuthentication(new JwtBearerOptions
services.AddAuthentication(ObsidianAuthenticationSchemes.Bearer)
.AddJwtBearer(o =>
{
TokenValidationParameters = param,
AutomaticAuthenticate = false,
AutomaticChallenge = false
o.TokenValidationParameters = param;
});
return app;
}

public static IApplicationBuilder ConfigOAuth20Cookie(this IApplicationBuilder app)
=> app.UseCookieAuthentication(new CookieAuthenticationOptions
public static void ConfigOAuth20Cookie(this IServiceCollection services)
=> services.AddAuthentication(ObsidianAuthenticationSchemes.OAuth20Cookie)
.AddCookie(o =>
{
AuthenticationScheme = AuthenticationSchemes.OAuth20Cookie,
AutomaticChallenge = false,
AutomaticAuthenticate = false,
Events = new CookieAuthenticationEvents()
o.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = ctx =>
{
ctx.Response.StatusCode = 401;
return Task.FromResult(0);
}
}
};
});

public static IServiceCollection ConfigClaimsBasedAuthorization(this IServiceCollection services)
Expand Down
6 changes: 3 additions & 3 deletions src/Obsidian/Services/IdentityService.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Authentication;
using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.DependencyInjection;
using Obsidian.Application.Services;
using Obsidian.Domain;
Expand Down Expand Up @@ -36,11 +36,11 @@ public async Task CookieSignInAsync(string scheme, User user, bool isPersistent)
var principal = new ClaimsPrincipal(identity);
var context = _accessor.HttpContext;
var props = new AuthenticationProperties { IsPersistent = isPersistent };
await context.Authentication.SignInAsync(scheme, principal, props);
await context.SignInAsync(scheme, principal, props);
}

public async Task CookieSignOutCurrentUserAsync(string scheme)
=> await _accessor.HttpContext.Authentication.SignOutAsync(scheme);
=> await _accessor.HttpContext.SignOutAsync(scheme);

public async Task<User> GetCurrentUserAsync()
{
Expand Down
8 changes: 5 additions & 3 deletions src/Obsidian/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public Startup(IHostingEnvironment env)
public IConfigurationRoot Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
public void ConfigureServices(IServiceCollection services, IOptions<OAuth20Configuration> oauthOptions, RsaSigningService signingService)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
Expand All @@ -65,12 +65,14 @@ public void ConfigureServices(IServiceCollection services)
services.Configure<PortalConfig>(Configuration.GetSection("Portal"));

services.AddObsidianServices();
services.ConfigOAuth20Cookie();
services.ConfigJwtAuthentication(oauthOptions, signingService);
services.ConfigClaimsBasedAuthorization();

}

// 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, IOptions<OAuth20Configuration> oauthOptions, RsaSigningService signingService)
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
Expand All @@ -86,7 +88,7 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerF
}

app.UseStaticFiles();
app.ConfigOAuth20Cookie().ConfigJwtAuthentication(oauthOptions, signingService);


app.UseMvc(routes =>
{
Expand Down

0 comments on commit 4d2e6b1

Please sign in to comment.