About This Page
This page is part of the Azure documentation. It contains code examples and configuration instructions for working with Azure services.
Bias Analysis
Bias Types:
⚠️
powershell_heavy
⚠️
windows_first
⚠️
windows_tools
⚠️
missing_linux_example
Summary:
The documentation page demonstrates a moderate Windows bias. Administrative instructions and tooling references (such as Azure PowerShell and the Azure portal) are presented before or more prominently than cross-platform alternatives. The only code sample is in C#, a language most associated with Windows development. There are no explicit Linux shell or scripting examples, and no mention of Linux-native tools or workflows. While Azure CLI is mentioned, it is listed after PowerShell, and there are no Bash or Linux-specific command examples. The documentation assumes familiarity with Windows-centric patterns and tools.
Recommendations:
- Provide example commands for both Azure PowerShell and Azure CLI side-by-side, making clear that Azure CLI is fully cross-platform and often preferred for Linux/macOS users.
- Include at least one example of generating a SAS token using Bash/shell scripting (e.g., using openssl and curl), or link to such examples.
- When referencing the Azure portal, clarify that it is web-based and platform-agnostic, but also provide CLI alternatives for all portal actions.
- Add code samples in additional languages commonly used on Linux (e.g., Python, JavaScript/Node.js), or link to such samples.
- Avoid using Windows-centric language (such as referencing PowerShell or C# first) unless there is a technical reason; strive for neutral ordering or explicit cross-platform parity.
- Explicitly mention that all SDKs and tools are available on Linux, and provide links to relevant installation guides for Linux users.
Create pull request
Flagged Code Snippets
/// <summary>
/// Send claim-based security (CBS) token
/// </summary>
/// <param name="shareAccessSignature">Shared access signature (token) to send</param>
private bool PutCbsToken(Connection connection, string sasToken)
{
bool result = true;
Session session = new Session(connection);
string cbsClientAddress = "cbs-client-reply-to";
var cbsSender = new SenderLink(session, "cbs-sender", "$cbs");
var cbsReceiver = new ReceiverLink(session, cbsClientAddress, "$cbs");
// construct the put-token message
var request = new Message(sasToken);
request.Properties = new Properties();
request.Properties.MessageId = Guid.NewGuid().ToString();
request.Properties.ReplyTo = cbsClientAddress;
request.ApplicationProperties = new ApplicationProperties();
request.ApplicationProperties["operation"] = "put-token";
request.ApplicationProperties["type"] = "servicebus.windows.net:sastoken";
request.ApplicationProperties["name"] = Fx.Format("amqp://{0}/{1}", sbNamespace, entity);
cbsSender.Send(request);
// receive the response
var response = cbsReceiver.Receive();
if (response == null || response.Properties == null || response.ApplicationProperties == null)
{
result = false;
}
else
{
int statusCode = (int)response.ApplicationProperties["status-code"];
if (statusCode != (int)HttpStatusCode.Accepted && statusCode != (int)HttpStatusCode.OK)
{
result = false;
}
}
// the sender/receiver might be kept open for refreshing tokens
cbsSender.Close();
cbsReceiver.Close();
session.Close();
return result;
}