我们正在尝试使用带有Identity Server4的Authlete api来创建和授权访问令牌,但我似乎无法弄清楚我们如何使用.NET Core进行设置?
答案 0 :(得分:2)
IdentityServer4是用C#编写的软件。如果您想从C#调用Web APIs的Authlete,可以使用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.)
的共同创始人