gpt4 book ai didi

azure - SignalR 和 Azure 函数与 AuthorizationLevel.Function

转载 作者:行者123 更新时间:2023-12-02 07:21:53 31 4
gpt4 key购买 nike

尝试使用功能 key (AuthorizationLevel.Function) 保护我的 azure 功能

我的azure函数使用signalR。如果我在协商和其他 signalR 入口点上使用 AuthorizationLevel.Function,当 javascript 代码连接到 signalR 时,如何传递功能键:功能:

       public static SignalRConnectionInfo Negotiate(
[HttpTrigger( AuthorizationLevel.Function, "post" )] HttpRequest req,
[SignalRConnectionInfo( HubName = "myHub")] SignalRConnectionInfo connectionInfo,
ILogger log )
{
return connectionInfo;
}

网站:

        const connection = new signalR.HubConnectionBuilder()
.withUrl('https://<myfunction>.azurewebsites.net')
.configureLogging(signalR.LogLevel.Information)
.build();

connection.start()
.catch(console.error);

HubConnectionBuilder 似乎可以访问 C# 中的 header ,但不能访问 javascript 中的 header 。

我已阅读Add headers to @aspnet/signalr Javascript client但第一个建议将 key 附加到 URL,并且在连接时会将/negotiate 附加到它,从而导致 https://host/&code=/negotiate 的 URL 无效。

如果不可能,是否建议使用其他方法来保护我的 signalR 功能?(也许不记名 token 如 https://learn.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1 )

谢谢

最佳答案

如果你看一下 the documentation of the withUrl method ,它允许选项对象作为第二个参数:

function withUrl(url: string, options: IHttpConnectionOptions)

选项类型为IHttpConnectionOptions ,这给出了一些可能性:

a) 您可以提供 IHttpConnectionOptions.accessTokenFactory 的实现,它应该返回一个不记名 token (为此,您需要在 Azure 函数中手动验证不记名 token )

b) 您可以提供自己的 HttpClient 实现,其中您可以通过添加 Azure 功能键来修改 Post 请求,如下所示:

const connection = new signalR.HubConnectionBuilder()
.withUrl('https://<myfunction>.azurewebsites.net', {
httpClient: {
post: (url, httpOptions) => {
const headers = {
...httpOptions.headers,
'x-functions-key': YOUR_AZURE_FUNCTION_KEY,
}

return axios.post(url, {}, { headers }).then((response) => {
return (newResponse = {
statusCode: response.status,
statusText: response.statusText,
content: JSON.stringify(response.data),
})
})
},
},
})
.configureLogging(signalR.LogLevel.Information)
.build()

来源:

https://learn.microsoft.com/en-us/aspnet/core/signalr/javascript-client?view=aspnetcore-3.1

How to pass Custom Header from React JS client to SignalR hub?

关于azure - SignalR 和 Azure 函数与 AuthorizationLevel.Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64595444/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com