Blazor webassembly http默认标头Forge Design Automation



早上好,我正在尝试使用Blazor和Net5开发一个网络应用程序。我已经成功地实现了三条腿的身份验证系统,并将令牌附加到默认标头以供进一步请求。我还在同一过程中实现了两条腿的身份验证请求,并将两者都保存在本地存储中。

现在,我需要开始调用一些数据管理服务来存储和检索模型,并将工作项提交给设计自动化。所有这些都需要将承载令牌与请求一起发送。我想在服务器端管理应用程序的这一部分,问题是:除了尝试从本地存储中检索令牌之外,有没有其他方法可以在服务器端使用令牌?

此外,是否可以在客户端应用程序中设置两个不同的HttpClient,以便能够附加两个不同令牌,然后在服务器端Blazor中使用相同的http客户端?我想我不能将服务从客户端注入到服务器。我可以使用DI 在客户端轻松完成

public async Task<string> PostSignedUrlAsync(string bucketKey, string objectKey)
{
using (var client = new HttpClient())
{
var token = await tokenManager.GetTwoFactorAsync();
using (var request = new HttpRequestMessage(
HttpMethod.Post,
$"https://{configurationManager.Host}/oss/v2/buckets/{bucketKey}/objects/{objectKey}/signed"
)
)
{
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
using (var response = await client.SendAsync(request))
{
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<PostObjectSigned>(json).SignedUrl;
}
}
return null;
}
}
}
public async Task PostTwoFactorAsync()
{
using (var client = new HttpClient())
{
using (var request = new HttpRequestMessage(
HttpMethod.Post,
$"https://{configurationManager.Host}/authentication/v1/authenticate"
)
)
{
var body = $"client_id={configurationManager.ClientId}&client_secret={configurationManager.ClientSecret}&grant_type=client_credentials&scope={configurationManager.ScopesInternal}";
request.Content = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded");
using (var response = await client.SendAsync(request))
{
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
TokenInternal = JsonConvert.DeserializeObject<Token>(json);
TokenInternal.ExpiresOn = DateTime.UtcNow.AddSeconds(TokenInternal.ExpiresIn) - TimeSpan.FromMinutes(10);
await localStorage.SetItemAsync(configurationManager.LocalStorageKeyInternal, TokenInternal);
}
}
}
}

}

也许这是一个简单的问题,答案很简单,但我找不到任何例子来解释如何解决这个问题;"连接";现在Forge文档中有一些关于Blazor实现的示例适用于此任务。

提前感谢

首先,请不要从客户端调用API,只发送范围为:viewables:read的令牌,以便在forge查看器中查看。除此之外,从服务器端调用所有的forge API。这是出于安全考虑。因为如果您向客户端发送并存储令牌,那么任何客户端都可以轻松访问您的资源。

关于代币范围,请参阅以下链接:

文档

教程

相关内容

最新更新