-2

我在 Finatra 上有一个 Scala 休息服务,并且想对使用 Azure Active Directory 访问我的休息服务的用户进行身份验证。

目前,我可以做一个 curl 来获取访问令牌:

curl -s -X POST https://login.microsoftonline.com/tenant id/oauth2/token -d grant_type=password -d username=$username -d password=$pass  -d resource=$resID -d client_id=$id -d client_secret=$key

但它要求用户将他的密码作为参数传递,这是一个安全问题。

有没有办法通过输入密码(我很确定这是不可能的)或要求他登录来使用 Azure AD 对用户进行身份验证?

4

1 回答 1

0

不建议使用您的用户名和密码登录 Azure 帐户。您最好创建服务主体以登录您的 Azure 帐户。请参考此链接:使用门户创建可访问资源的 Azure Active Directory 应用程序和服务主体

此外,您可以使用 Azure CLI 2.0 来创建它。

az ad sp create-for-rbac --name {appId} --password "{strong password}" 

例子:

az ad sp create-for-rbac --name shuiexample --password "Password012!!"

你可以得到如下结果:

{
  "appId": "bca24913-026d-4020-b9f1-add600bf9045",
  "displayName": "shuiexample1234",
  "name": "http://shuiexample1234",
  "password": "*******",
  "tenant": "*******"
}

使用服务主体登录。

APPID="bca24913-026d-4020-b9f1-add600bf9045"
PASSWORD="******"
TENANTID="*******"

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'client_id=$APPID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PASSWORD&grant_type=client_credentials' 'https://login.microsoftonline.com/$TENANTID/oauth2/token'
于 2017-07-07T02:29:32.420 回答