我有一个正在开发的网站,该网站使用IdentityServer3进行身份验证,并且它还返回访问 token 以启用对我的API的访问。一切正常。我现在将网站重写为独立的Windows EXE。 EXE是用React和Electron编写的,使其成为一个独立的应用程序。我的问题是:我将“授权”端点称为我的identityserver3服务器,但是我不知道为identityserver3所需的“redirect_uri”放入什么?由于我的EXE是独立的,所以没有uri地址吗?

有没有一种方法可以将IdentityServer3用作API,我可以在其中将“授权” URL发送到IdentityServer3,并让其返回访问 token 作为响应(对API调用?)。

最佳答案

您可以按照柯克·拉金(Kirk Larkin)的话做-使用“客户凭证”流程。

.NET中包含以下代码:

 var client = new TokenClient(
            BaseAddress + "/connect/token",
            "clientId",
            "clientSecret");

var result = client.RequestClientCredentialsAsync(scope: "my.api").Result;

var accessToken = result.AccessToken;

其中BaseAddress是您的IDS地址。

当然,您将必须使用适当的流程(客户端凭据)在IDS客户端列表中注册您的客户端,并且范围是可选的,但是我想您将需要一个。

然后访问 protected API非常简单:
var client = new HttpClient();
client.SetBearerToken(accessToken);
var result = client.GetStringAsync("https://protectedapiaddress").Result;

编辑:对于JavaScript方法:

Thisthis看起来像是可行的解决方案,但我都没有尝试过

09-18 21:19