2016-07-01 7 views
1

최근에 프로젝트 팀에 가입했으며 프로젝트 백엔드에 대한 사용자 역할을 설정해야합니다. Owin과 함께 ASP.NET C# WebApi를 사용합니다.Owin 권한 부여가 역할을 거부합니다.

[Authorize(Roles = "Admin")] 

응답은 항상 권한 부여가이 요청에 대한 거부 :이 같은 컨트롤러 방법에 속성을 할당 할 때 내 문제이다. 그러나 단순히 사용하는 경우 :

[Authorize] 

의미가 있습니다. 관리자 역할이 할당 된 사용자로 로그인하고 있습니다. Authorization roles WebAPI oauth owin

그러나, startup.cs에 자신의 코드가 어떻게 든 다른 것 같다, 그렇지 않으면 내가 제대로 대답을 따르 사투를 벌인거야 :

나는이 질문과 유사 것으로 나타났습니다.

내가 작업해야하는 startup.cs의 코드는 다음과 같습니다

public void Configuration(IAppBuilder app) 
{ 
    // configure OAuth 
    ConfigureOAuth(app); 

    // configure Mvc 
    HttpConfiguration config = new HttpConfiguration(); 
    WebApiConfig.Register(config); 
    app.UseWebApi(config); 
} 

public void ConfigureOAuth(IAppBuilder app) 
{ 
    OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() 
    { 
     AllowInsecureHttp = true, 
     TokenEndpointPath = new PathString("/token"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), 
     Provider = new SimpleAuthorizationServerProvider() 
    }; 

    // Token Generation 
    app.UseOAuthAuthorizationServer(OAuthServerOptions); 
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 
} 

내가 역할 수 있도록 여기에 추가해야하거나 코드에서 다른 곳에서해야 다른 무언가가있다. ASP.NET C# MVC 또는 WebApi에 익숙하지 않은데, 어떤 도움도 심각하게 감사드립니다.

SimpleAuthorizationServerProvider에서

+0

로깅 로직을 보여주세요 당신은 주장/역할 –

답변

0

당신은 GrantResourceOwnerCredentials

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { 
await Task.Run(
() => { 
     ...logging logic... 
     var loginResult = authRepository.Login(context.UserName, context.Password); 
     if (!loginResult.Success) return; 
     ...logging logic... 

     var claims = new List <Claim>(); 
     claims.add(new Claim(ClaimTypes.Role, loginResult.Role)); < --here 
     var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ExternalBearer); 
     context.Validated(id); 
    }); 
} 

그리고 loggingResult 같은 방법은 저장소/DAL 층에 의해 반환되는 무언가가

+0

을 할당 할 경우 위대한,하지만 어떻게 내가 DB에서 자신의 역할을 검색 할 수있는이 내에서 사용자의 ID를 찾을 수 있습니까? – Colum

+0

난 내 대답을 편집, 당신은 context.UserName 및 context.Password 속성을 –

+0

SimpleAuthorizationServerProvider를 연장해야합니까 아니면 액세스 할 수 있습니까? 또한이 Repo에 로그인 방법이 표시되지 않습니다. 이 프로젝트 또는 백엔드를 설정하지 않았으므로 작업해야합니다./ – Colum

관련 문제