簡體   English   中英

將 loginWithUsernamePassword 遷移到 @azure/identity

[英]Migrate loginWithUsernamePassword to @azure/identity

我將一些代碼從@azure/ms-node-auth遷移到@azure/identity ,它通過loginWithUsernamePassword對 Azure Active Directory (AAD) 進行身份驗證。 遷移指南指向UsernamePasswordCredential class,但它拒絕了我的請求。

// Working @azure/ms-node-auth snippet
async function getTokenLegacy(): Promise<string> {
  const credentials = await msRestNodeAuth.loginWithUsernamePassword(
    USERNAME,
    PASSWORD, {
      domain: AAD_TENANT_ID,
      clientId: CUSTOM_CLIENT_ID,
      tokenAudience: CUSTOM_APP_ID,
    },
  );
  return (await credentials.getToken()).accessToken;
}

// Non-working migrated @azure/identity version
async function getTokenMigrated(): Promise<string> {
  const credentials = new UsernamePasswordCredential(
    AAD_TENANT_ID, 
    CUSTOM_CLIENT_ID, 
    USERNAME, 
    PASSWORD);
  return (await credentials.getToken(CUSTOM_APP_ID)).token;
}

發生以下錯誤。

AADSTS50126: Error validating credentials due to invalid username or password.

用戶有一個federated帳戶, @azure/ms-rest-nodeauth通過SAML協議驗證憑據。

UserRealm: VERBOSE: UserRealm response:
UserRealm: VERBOSE:  AccountType:             federated
UserRealm: VERBOSE:  FederationProtocol:      wstrust
TokenRequest: VERBOSE: Acquiring token with username password for federated user
...
WSTrustResponse: INFO: Found token of type: urn:oasis:names:tc:SAML:1.0:assertion
TokenRequest: VERBOSE: Performing OAuth assertion grant type exchange.
  • 請嘗試重置密碼,否則您可以使用以下解決方法

  • 當您使用聯合身份驗證時,您將被重定向聯合身份進行驗證。 當您通過傳遞用戶名和密碼來使用ropc流時,不會發生重定向,並給出invalid username or password的錯誤。

為了完成這項工作,您需要禁用聯合身份驗證並使用AAD 站點的管理身份驗證,這樣就不需要重定向。 因此,您需要從 AAD 站點創建用戶。

有關更多信息,請參閱@amanpreetsingh-msft 和 @MarileeTurscak-MSFT 建議的MS Q&A答案。

不過,如果您想使用聯合身份驗證,您可以參考此博客

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM