Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 将服务器4标识为Web API_Asp.net Core_Asp.net Identity_Identityserver4 - Fatal编程技术网

Asp.net core 将服务器4标识为Web API

Asp.net core 将服务器4标识为Web API,asp.net-core,asp.net-identity,identityserver4,Asp.net Core,Asp.net Identity,Identityserver4,我是IdentityServer4的新手。现在,我尝试使用JWT授权实现微服务(通过向API传递每个请求的令牌)。因此,模式是原语-IDS4服务器作为身份验证服务器,ASP.NET Identity+MSSQL用于客户端数据使用和存储,其他服务使用身份验证服务进行令牌验证。 所以,我看了很多文章,但没有找到一篇可以自定义IDS4行为的示例。 例如,我希望客户端调用AuthorizeByLogin(AuthorizeView模型)API方法,该方法在IDS4项目中实现,其中模型是两个字段的对象:U

我是IdentityServer4的新手。现在,我尝试使用JWT授权实现微服务(通过向API传递每个请求的令牌)。因此,模式是原语-IDS4服务器作为身份验证服务器,ASP.NET Identity+MSSQL用于客户端数据使用和存储,其他服务使用身份验证服务进行令牌验证。 所以,我看了很多文章,但没有找到一篇可以自定义IDS4行为的示例。 例如,我希望客户端调用
AuthorizeByLogin(AuthorizeView模型)
API方法,该方法在IDS4项目中实现,其中模型是两个字段的对象:
Username,Password
。在这个方法中,我希望检查数据库中的用户,并生成access_令牌,该令牌被传递给客户端,以便使用受保护的API。 但是没有一个例子说明如何做到这一点(调用API方法、传递对象和接收令牌)。其中大部分都说“为此使用*/connect/token”

有谁能给我一个代码的例子,在这种方式是实现得很好?或者告诉我应该实现哪些接口并正确传递给ASP.NET核心应用程序中的服务,以实现身份验证Web API+IdentityServer 4实现


谢谢。

您可以在中找到大量的快速入门示例。据我所知,您希望使用
ResourceOwnerCredentials
grant类型。如果不重新实现Identity Server 4的大多数功能,您将无法轻松修改颁发令牌的端点,但您可以实现
IResourceOwnerPasswordValidator
接口,并使用适当的允许授权类型设置客户端:

    new Client
    {
        ClientId = "your_client",
        AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,

        ClientSecrets =
        {
            new Secret("your_password".Sha256())
        },
        AllowedScopes = { ... }
    }
之后,客户端可以通过提供给定用户的用户名和密码以及自己的凭据来调用
connect\token
端点:

var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
{
    Address = disco.TokenEndpoint,
    ClientId = "ro.client",
    ClientSecret = "secret",

    UserName = "alice",
    Password = "password",
    Scope = "api1"
});

非常感谢。如果我没有弄错的话,就不可能在IdentityServer4中为内部用户身份验证创建API,是吗?我不能使用一些不同的身份验证方法,例如AuthenticateByPhone、AuthenticateByMail和json输入数据传递,我可以生成令牌供客户端访问其他受保护的Web API?我也不能自定义给定的令牌验证,对吗?也许你知道,有没有类似的Identity Server可以很好地定制,并允许我使用单独的Identity Server创建SOA,基于ASP.NET Core Identity和自己的API?没有问题。您试图做的事情并不容易,因为您试图创建自己的授权类型和身份验证流。虽然令牌验证是可定制的,但它在很大程度上取决于您使用的api资源类型。最后,您可能希望查看OpenIdDict(),尽管我不确定这对于自定义流来说是否是可定制的。