我有使用 Azure B2C 和 MSAL 進行身份驗證的 React(全堆疊 Next.js)應用程式。我得到了PKCE登錄流程(只有谷歌作為提供者)作業,我正在呼叫acquireTokenSilent獲取令牌以用于授權對后端的 API 呼叫(基于 ASP.NET Core 的后端將稍后實作)。
回應的哪一部分應該Bearer從 Next.js 應用程式發送到后端以授權請求并用作資料庫中的用戶 ID?
在以下代碼段中可以看到我如何獲取令牌。
const Home: NextPage = () => {
const { instance, accounts } = useMsal();
useEffect(() => {
if (!accounts.length) return;
instance
.acquireTokenSilent({
scopes: [],
account: accounts[0],
})
.then((token) => console.log("token:", token));
});
return (
<div className={styles.container}>
<button onClick={handleClick(instance)}>login</button>
</div>
);
};
export default Home;
這會注銷以下回應,如下面的代碼片段所示。為了安全起見,我已將字串更改"STRING"為,因為這只是出于演示目的。空字串""表示回應中的字串為空。
{
"authority": "STRING",
"uniqueId": "STRING",
"tenantId": "",
"scopes": [],
"account": {
"homeAccountId": "STRING",
"environment": "STRING",
"tenantId": "",
"username": "EMAIL",
"localAccountId": "STRING",
"name": "John Doe",
"idTokenClaims": {
"exp": "NUMBER",
"nbf": "NUMBER",
"ver": "STRING",
"iss": "STRING",
"sub": "STRING",
"aud": "STRING",
"nonce": "STRING",
"iat": "NUMBER",
"auth_time": "NUMBER",
"idp_access_token": "STRING",
"name": "STRING",
"idp": "STRING",
"oid": "STRING",
"emails": [
"STRING"
],
"tfp": "STRING"
}
},
"idToken": "STRING",
"idTokenClaims": {
"exp": "NUMBER",
"nbf": "NUMBER",
"ver": "STRING",
"iss": "STRING",
"sub": "STRING",
"aud": "STRING",
"nonce": "STRING",
"iat": "NUMBER",
"auth_time": "NUMBER",
"idp_access_token": "STRING",
"name": "JOHN DOE",
"idp": "google.com",
"oid": "STRING",
"emails": [
"EMAIL"
],
"tfp": "STRING"
},
"accessToken": "",
"fromCache": false,
"expiresOn": null,
"correlationId": "STRING",
"familyId": "",
"tokenType": "",
"state": "",
"cloudGraphHostName": "",
"msGraphHost": "",
"fromNativeBroker": false
}
uj5u.com熱心網友回復:
我想到了。
您需要accessToken作為不記名發送。您可以accessToken通過定義范圍來獲取。請務必記住,您需要完整的 URI。我犯的錯誤是將其定義為task.write而不是完整的 url,如下例所示:
https://contoso.onmicrosoft.com/43o34te-befa-4445-aaaa-bbbbbbbbb/tasks.write
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/494916.html
上一篇:在SpringBoot中向每個API添加自定義請求標頭
下一篇:Helm連接的字串沒有被渲染
