12

идентичности У меня есть asp.net решение, которое состоит изasp.net веб-формы клиента с сервером 4

1). asp.net identity server rc 3 
2). asp.net Core web api 
3). asp.net webform (not in asp.net core, client) 

Я не вижу какой-либо образец с сервером идентичности 4 и веб-формы клиента. Можете ли вы предложить, как аутентифицировать пользователя веб-формы, используя сервер идентификации с идентификатором asp.net, а затем вызвать api с помощью токена доступа?

Я не вижу сервера идентичности 4 образца с web form client или sample

сервер идентичности 3 имеет sample, но он делает все, что в startup

Когда я вижу mvc client для сервера идентичности 4, он имеет все настройки в методе configure, а затем называет его как this

Как применить атрибут Authorize в веб-форме, чтобы я был перенаправлен на сервер идентификации 4 для входа в систему, а затем после входа в систему, когда я вызываю api следующим образом:

Как сменить клиента на веб-форму?

new Client() 
        { 
        ClientId = "mvcClient", 
        ClientName = "MVC Client",      
        AllowedGrantTypes = GrantTypes.HybridAndClientCredentials, 

        ClientSecrets = new List<Secret>() 
        { 
         new Secret("secret".Sha256()) 
        }, 

        RequireConsent = false; 

        // where to redirect to after login 
        RedirectUris = { "http://localhost:5002/signin-oidc" }, 
        // where to redirect to after logout 
        PostLogoutRedirectUris = { "http://localhost:5002" }, 

        AllowedScopes = 
        { 
         StandardScopes.OpenId.Name, 
         StandardScopes.Profile.Name, 
         StandardScopes.OfflineAccess.Name, 
         StandardScopes.Roles.Name, 
         "API" 
        } 
       } 

new InMemoryUser() 
      { 
       Subject = "1", 
       Username = "testuser", 
       Password = "password", 
       Claims = new List<Claim>() 
       { 
        new Claim("name", "Alice"), 
        new Claim("Website", "http://alice.com"), 
        new Claim(JwtClaimTypes.Role, "admin") 

       } 
      } 


return new List<Scope>() 
       { 
        StandardScopes.OpenId, // subject id 
        StandardScopes.Profile, // first name, last name 
        StandardScopes.OfflineAccess, 
        StandardScopes.Roles, 
        new Scope() 
        { 
         Name = "API", 
         Description = "API desc", 
         Type = ScopeType.Resource, 
         Emphasize = true, 
         IncludeAllClaimsForUser = true, 
         Claims = new List<ScopeClaim> 
         { 
          new ScopeClaim(ClaimTypes.Name),  
          new ScopeClaim(ClaimTypes.Role) 
         } 
        } 
       }; 


public void CallApiUsingClientCredentials() 
       { 
        var tokenClient = new TokenClient("http://localhost:5000/connect/token", "mvc", "secret"); 
        var tokenResponse = await tokenClient.RequestClientCredentialsAsync("api1"); 

        var client = new HttpClient(); 
        client.SetBearerToken(tokenResponse.AccessToken); 
        var content = await client.GetStringAsync("http://localhost:5001/identity"); 

        var result = JArray.Parse(content).ToString(); 

       } 

[Authorize(Roles="admin)] 
      [HttpGet] 
      public IActionResult Get() 
        { 
         return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); 
       } 

ответ

0

В WebForms вы можете настроить авторизацию в web.config

<configuration> 
    <system.web> 
    <authorization> 
     <allow roles="domainname\Managers" /> 
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</configuration> 

Из answer on StackOverflow

Также обратите внимание на web.config в примере IdentityServer3

<location path="About"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 
    </location>