使用this文章我已经构建了一个托管在Azure上的Java Api应用程序。我可以使用Postman,Curl和我的浏览器请求API。但现在我使用Active Directory将身份验证添加到api应用程序。
现在如果我想要请求API,我会在使用浏览器时转发到登录页面。但现在我想使用带有Curl和Postman身份验证的API。怎么做?
编辑:我尝试了什么?在下面我使用这个http请求url,它可以关闭身份验证:https://<myappurl>.azurewebsites.net/api/contacts
因此,当我打开身份验证并使用
运行请求时curl https://<myappurl>.azurewebsites.net/api/contacts
然后我得到了这个结果:
You do not have permission to view this directory or page.
即使我让curl打印响应标题,我也无法获得有关重定向网址的任何信息。同样在标题内,我收到一个http状态代码,其中包含不允许的信息:
HTTP/1.1 401 Unauthorized
我认为它可能在this示例中使用OAuth2。但我不知道这是否适用于Azure。即使这样,我也不知道在哪里请求令牌。此外,我需要所有这些数据:
但我没有任何客户机密。我是否在OAuth2的正确轨道上?
编辑2:Here我读过使用此网址进行Active Directory身份验证:
{your App Service base URL}/.auth/login/aad
如果我使用curl请求此URL,我会得到以下输出:
<head>
<title>Document Moved</title>
</head>
<body>
<h1>Object Moved</h1>
This document may be found <a HREF="https://login.windows.net/
<some-id>/oauth2/authorize?response_type=id_token&redirect_uri=
https%3A%2F%2<myappurl>.azurewebsites.net%2F.auth%2Flogin%2Faad%2F
callback&client_id=<client-id>&scope=openid+profile+email&
response_mode=form_post&state=%23&
nonce=552b4c61f8bd4988a48c8763f9dfa42a_20161026075605">here</a>
</body>
如果我使用curl调用此网址,那么我会使用网址login.microsoftonline.com
而不是login.windows.net
获取相同的信息。如果我使用curl调用此新网址,那么我会获得一些HTML / js-code错误代码400.
然后我尝试用
传递用户名和密码curl -u <username>:<password> "https://login.microsoftonline.com...."
但是这又导致HTML / js输出错误代码为400.那么现在要做什么来登录?