2
ID 서버를 사용하여 인증 된 ASP.net MVC5 클라이언트 (WEBAPP)가 있습니다. 그리고 아래 코드를 사용하여 웹 API에 액세스합니다. 신원 서버ASP.net에서 리소스 권한 부여 Identity Server를 사용하는 WEP API
private async Task<TokenResponse> GetTokenAsync()
{
var client = new TokenClient(
"https://localhost:44301/identity/connect/token",
"mvc_service",
"secret");
return await client.RequestClientCredentialsAsync("sampleApi");
}
그리고 액세스 토큰을 사용
하지 1.Get 액세스 토큰, 나는 웹 API를 제공 정체성 서버 및 자원 Authotization에 의해 보호됩니다 WEBAPI
var client = new HttpClient();
client.SetBearerToken(token);
var gg = this.HttpContext;
var json = await client.GetStringAsync("http://localhost:50990/jarvis");
var jsonStr = JArray.Parse(json).ToString();
var model = JsonConvert.DeserializeObject<List<User>>(jsonStr);
전화 해요 IdentityServer에 의해 (Thinktecture.IdentityModel.Owin.ResourceAuthorization.WebApi)
APIController는 다음과 같습니다.
[Authorize]
public class AuthorizationController : ApiController
{
[ResourceAuthorize(AuthorizationResources.AdminActions.Create, AuthorizationResources.Admin)]
public async Task<IHttpActionResult> Get()
{
var user = User as ClaimsPrincipal;
List<User> usersList = await GetUsers();
return Json(usersList);
}
}
그리고 내 ResourceAuthorize 내 질문
어떻게 내가 그래서 난에 체크를 할 수있는 WEBAPI의 주장을 통과 할 수 있습니다
public class APIAuthorization: ResourceAuthorizationManager { public override Task<bool> CheckAccessAsync(ResourceAuthorizationContext context) { var resource = context.Resource.First().Value; if (resource == AuthorizationResources.Admin) { return CheckAdminAccessAsync(context); } if (resource == AuthorizationResources.Editor) { return CheckEditorAccessAsync(context); } if (resource == AuthorizationResources.Reader) { return CheckReaderAccessAsync(context); } return Nok(); } private Task<bool> CheckReaderAccessAsync(ResourceAuthorizationContext context) { return Eval(context.Principal.IsInRole("Admin")); } private Task<bool> CheckEditorAccessAsync(ResourceAuthorizationContext context) { return Eval(context.Principal.IsInRole("Admin")); } private Task<bool> CheckAdminAccessAsync(ResourceAuthorizationContext context) { return Eval(context.Principal.IsInRole("Admin")); } }
다음과 같이 ResourceAuthorize
입니다 APIAuthorization : 평가 (context.Principal.IsInRole ("Admin"))이것이 리소스 인증을 수행하는 올바른 방법입니까?
는 기본적으로 나는 데스크탑 개발자입니다. 나는 웹 앱이 처음이다. –