我想通过调用IS验证的单独api来从身份服务器项目中拆分电子邮件服务。
我的问题是从身份服务器调用api。目前我还有额外的假冒'调用api的IdentityServer内的客户端。
以下是Client Credential Flow的标准选项。
但我想省略客户端。所以IdentityServer就是客户端。 我创造了一个假的' IS中的客户端,我认为这是错误的做法吗?
IdentityServer
中的MessageService.cs // Authenticating the fake client
var disco = await DiscoveryClient.GetAsync("http://localhost:5000");
var tokenClient = new TokenClient(disco.TokenEndpoint, "MailApiClient", "secret");
var tokenResponse = await tokenClient.RequestClientCredentialsAsync("EmailScope");
// Setting the token
client.SetBearerToken(tokenResponse.AccessToken);
var content = new StringContent(JsonConvert.SerializeObject(someMailModel));
// Posting to api
var response = await client.PostAsync(_emailSettings.RequestUri, content).ConfigureAwait(false);
假客户端使用IS进行身份验证,然后将带有令牌的消息发送给mailapi。 而是在IS中创建虚假客户端我希望IS是客户端本身。因此IdentityServer将在没有中间件客户端的情况下调用api。
此外,其他一些客户也将使用MailApi。
答案 0 :(得分:2)
有一个“IdentityServerTools”类,可以在IdentityServer中手动发出令牌。
How to protect Web API called by IdentityServer4 https://identityserver4.readthedocs.io/en/release/topics/tools.html