使用Identity Server4 Authlete api

时间:2018-01-03 10:04:07

标签: authlete

我们正在尝试使用带有Identity Server4的Authlete api来创建和授权访问令牌,但我似乎无法弄清楚我们如何使用.NET Core进行设置?

1 个答案:

答案 0 :(得分:2)

IdentityServer4是用C#编写的软件。如果您想从C#调用Web APIsAuthlete,可以使用authlete-csharp库(可用作Authlete.Authlete NuGet包)。 authlete-csharp库的API参考可用here

以下是授权服务器的示例实现& OpenID提供程序和使用authlete-csharp库的资源服务器。

以下文章介绍了csharp-oauth-server和csharp-resource-server。

基本上,如果您使用Authlete,则不必使用IdentityServer4。但是,如果您有充分的理由使用IdentityServer4,Authlete API的某些部分可能适用于您的目的。

例如,如果您想将Authlete用作访问令牌的生成器,则Authlete的/api/auth/token/create API可能有效。

// An instance of IAuthleteApi interface.
IAuthleteApi api = ......

// Prepare a request to /api/auth/token/create API.
var request = new TokenCreateRequest
{
    GrantType = ......,
    ClientId  = ......,
    Subject   = ......,
    Scopes    = ......,
    ......
};

// Call /api/auth/token/create API.
TokenCreateResponse response = await api.TokenCreate(request);

// If the API call successfully generated an access token.
if (response.Action = TokenCreateAction.OK)
{
    // The newly issued access token.
    string accessToken = response.AccessToken;
}

如果您想将Authlete用作客户端应用程序元数据的存储空间,/api/client/* API(以及"客户端ID别名"功能)可能会有效。

// An instance of IAuthleteApi interface.
IAuthleteApi api = ......

// Prepare a request to /api/client/create API.
var request = new Client
{
    ClientName   = ......,
    Developer    = ......,
    ClientType   = ......,
    RedirectUris = ......,
    ......
};

// Call /api/client/create API. Client ID and client secret
// are automatically generated and assigned by Authlete.
Client client = await api.CreateClient(request);

// You can update client information by calling
// /api/client/update/{clientId} API.
client = await api.UpdateClient(client);

Authlete管理多项服务。这里的服务是一个对应于一个授权服务器& OpenID提供商。甚至服务本身也可以由/api/service/* API管理。

// An instance of IAuthleteApi interface.
IAuthleteApi api = ......

// Prepare a request to /api/service/create API.
var request = new Service
{
    ServiceName     = ......,
    Issuer          = ......,
    SupportedScopes = ......,
    ......
};

// Call /api/service/create API. A pair of API key and
// API secret to manage the service is automatically
// generated and assigned by Authlete.
Service service = await api.CreateService(request);

// You can update service information by calling
// /api/service/update/{serviceApiKey} API.
service = await api.UpdateService(service);

虽然可以通过Authlete API管理服务和客户端应用程序,但我建议您使用Web控制台(Service Owner Console& Developer Console)来管理它们。

包括IdentityServer4在内的许多库都需要编程来配置授权服务器本身,注册客户端应用程序和数据库设置。我不想做这些事情,最后决定开发一个库而不是一个SaaS(= API +永久存储),以免开发人员摆脱负担。这就是Authlete诞生的原因。 (我是Authlete, Inc.

的共同创始人