Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 611afa9

Browse files
Initial RBAC implementaion done.
1 parent e65c0f6 commit 611afa9

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

‎server/AuthWebApplication/AuthWebApplication/Controllers/AuthorizeTokenController.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using System.Security.Claims;
45
using System.Threading.Tasks;
56
using AuthWebApplication.Models.ViewModels;
67
using AuthWebApplication.Services;
78
using Microsoft.AspNetCore.Authentication;
89
using Microsoft.AspNetCore.Authorization;
910
using Microsoft.AspNetCore.Http;
1011
using Microsoft.AspNetCore.Mvc;
12+
using Microsoft.IdentityModel.JsonWebTokens;
1113
using Newtonsoft.Json;
1214
using Newtonsoft.Json.Linq;
1315

1416
namespace AuthWebApplication.Controllers
1517
{
18+
[Authorize]
1619
[Route("api/[controller]")]
1720
[ApiController]
1821
public class AuthorizeTokenController : ControllerBase
@@ -24,8 +27,13 @@ public AuthorizeTokenController(RedisService redisService)
2427
this.redisService = redisService;
2528
}
2629

27-
public async Task<IActionResult> Get(string userName,stringjti,stringresource)
30+
public async Task<IActionResult> Get(string resource)
2831
{
32+
var userName = this.User.Identity.Name;
33+
var claimsIdentity = this.User.Identities.First() as ClaimsIdentity;
34+
var claim = claimsIdentity.Claims.First(x => x.Type == JwtRegisteredClaimNames.Jti);
35+
var jti = claim.Value;
36+
2937
var inValid = string.IsNullOrWhiteSpace(userName) || string.IsNullOrWhiteSpace(jti) || string.IsNullOrWhiteSpace(resource);
3038
if (inValid)
3139
{

‎server/WebApplication2/WebApplication2/Attributes/TokenAuthorizeAttribute.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
using System.Linq;
44
using System.Net;
55
using System.Net.Http;
6+
using System.Net.Http.Headers;
7+
using System.Security.Claims;
68
using Microsoft.AspNetCore.Authorization;
79
using Microsoft.AspNetCore.Mvc;
810
using Microsoft.AspNetCore.Mvc.Filters;
@@ -15,14 +17,13 @@ public class TokenAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter
1517
{
1618
public void OnAuthorization(AuthorizationFilterContext context)
1719
{
18-
var claims = (context.HttpContext.User.Identity as System.Security.Claims.ClaimsIdentity).Claims.ToList();
19-
var claim = claims.FirstOrDefault(x => x.Type == JwtRegisteredClaimNames.Jti);
20-
var jti = claim.Value;
21-
string authServerUrl = Constants.AuthServer;
22-
string resource = context.HttpContext.Request.Path.Value;
23-
var name = context.HttpContext.User.Identity.Name;
24-
string url = $"{authServerUrl}/api/AuthorizeToken?userName={name}&jti={jti}&resource={resource}";
25-
HttpClient client = new HttpClient();
20+
var authServerUrl = Constants.AuthServer;
21+
var resource = context.HttpContext.Request.Path.Value;
22+
var url = $"{authServerUrl}/api/AuthorizeToken?resource={resource}";
23+
24+
using var client = new HttpClient();
25+
client.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(context.HttpContext.Request.Headers["Authorization"].ToString());
26+
2627
try
2728
{
2829
var httpResponseMessage = client.GetAsync(url).GetAwaiter().GetResult();

‎server/WebApplication2/WebApplication2/appsettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
}
1313
},
1414
"AllowedHosts": "*",
15-
"AuthServer": "http://localhost:5000"
15+
"AuthServer": "https://localhost:5001"
1616
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /