在azure的API应用程序中使用Active Directory身份验证

时间:2016-10-25 15:52:29

标签: java api azure curl active-directory

使用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。即使这样,我也不知道在哪里请求令牌。此外,我需要所有这些数据:

  • 客户端ID
  • 客户端秘密
  • 用户名
  • 密码

但我没有任何客户机密。我是否在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&amp;redirect_uri=
    https%3A%2F%2<myappurl>.azurewebsites.net%2F.auth%2Flogin%2Faad%2F
    callback&amp;client_id=<client-id>&amp;scope=openid+profile+email&amp;
    response_mode=form_post&amp;state=%23&amp;
    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.那么现在要做什么来登录?

0 个答案:

没有答案