【问题标题】:How to generate Shared Access Signature Token in C#如何在 C# 中生成共享访问签名令牌
【发布时间】:2017-10-16 22:14:36
【问题描述】:

用于在 Azure 通知中心创建注册 我们想要下面的 api 的授权令牌

https://{namespace}.servicebus.windows.net/{NotificationHub}/registrations/?api-version=2015-01

请看以下链接
https://msdn.microsoft.com/en-us/library/azure/dn223265.aspx

【问题讨论】:

    标签: c# azure azure-notificationhub azure-servicebus-queues


    【解决方案1】:

    // 添加Nuget包

    Install-Package Microsoft.Azure.NotificationHubs
    
    using Microsoft.Azure.NotificationHubs;//Add namespace
    
    
    string accessTokenstring = GetAccessToken();
    
     private string GetAccessToken()
            {
                var hubName = "<Notification Hub>";
                string connectionString = "Endpoint=sb://<Notification Hub Namespace>.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=<Key>";
                var apiVersion = "?api-version=2015-01";
                string endpoint = null;
                string sasKeyValue = null;
                string sasKeyName = null;
                string targetUri = null;
                var parts = connectionString.Split(';');
                foreach (var part in parts)
                {
                    if (part.IndexOf("Endpoint") == 0)
                    {
                        endpoint = "https" + part.Substring(11);
                    }
                    else if (part.IndexOf("SharedAccessKeyName") == 0)
                    {
                        sasKeyName = part.Substring(20);
                    }
                    else if (part.IndexOf("SharedAccessKey") == 0)
                    {
                        sasKeyValue = part.Substring(16);
                    }
                }
                targetUri = endpoint + hubName;
                var registrationPath = targetUri + "/Registrations/";
                var resourceUri = registrationPath + apiVersion;
                TimeSpan sinceEpoch = DateTime.UtcNow - new DateTime(1970, 1, 1);
                string accessTokenstring = SharedAccessSignatureTokenProvider.GetSharedAccessSignature(sasKeyName, sasKeyValue, resourceUri, sinceEpoch);
                return accessTokenstring;
            }
    

    【讨论】:

    • 谢谢Bruce,为了获得上述令牌,我花了超过 10 个小时,但最终我得到了解决方案。抱歉英语不好。
    【解决方案2】:

    尝试关注 Direct Send (https://msdn.microsoft.com/en-us/library/mt608572.aspx) 我遇到了同样的问题。

    我能够使用@Sama 的解决方案,只需将“注册”更改为“消息”。提供的解决方案在 .Net Core 中运行。

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 2021-01-03
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多