我在Azure上创建了一个linux虚拟机,在同一个订阅和同一资源组中创建了一个Blob存储帐户。
我正在尝试使用共享访问签名从我的虚拟机访问我的存储帐户。
所以我使用我的虚拟机的公共IP生成了一个SAS URL,并尝试从我的Java应用程序访问存储帐户,并且我有一个错误告诉我指定的IP不在授权IP范围内。
我尝试了另一个订阅并得到了同样的东西。
我也尝试使用curl并且总是遇到同样的错误。
错误是:
import javax.swing.*; import java.awt.*; public class FirstView { private JFrame frame; private JTextArea informacionText; // not sure if that is needed as field public FirstView() { informacionText = new JTextArea(); informacionText.setEditable(false); informacionText.setBorder(BorderFactory.createLineBorder(Color.BLACK)); informacionText.setLineWrap(true); informacionText.append("Information, bla bla bla"); JScrollPane scrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.setBorder(BorderFactory.createLineBorder(Color.BLACK)); scrollPane.setViewportView(informacionText); JPanel infoPanel = new JPanel(); infoPanel.setLayout(new FlowLayout()); infoPanel.add(scrollPane); JPanel leftPanel = new JPanel(); leftPanel.setLayout(new BorderLayout()); leftPanel.add(infoPanel, BorderLayout.NORTH); // TODO consider moving above code to an own method returning the left panel frame = new JFrame("title"); frame.setLayout(new BorderLayout()); frame.add(leftPanel, BorderLayout.WEST); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(900,500); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
答案 0 :(得分:0)
根据您提供的错误消息,我假设您在生成SAS令牌时可能已配置了可选参数IP
。
如官方tutorial中所述:
IP。一个可选参数,用于指定Azure之外的IP地址或IP地址范围(请参阅“路由会话配置状态”部分)以接受请求。
请尝试检查您的SAS网址,并查看您是否配置了sip
参数。您可以尝试删除可选的IP参数或包含特定的IP并重新生成SAS令牌。
答案 1 :(得分:0)
基于布鲁斯的回答,请注意上面引用的同一文档说“ Azure之外”。我相信,那么将不支持在SAS中使用sip在Azure范围内的IP。对于类似行为,最好的选择是使用Storage Firewall,并允许连接VM的虚拟网络。