Comments (5)
I'm facing the same problem.
I haven't found any other better option than reading roles in App from access_token...
from ms-identity-javascript-angular-tutorial.
I'm facing the same problem.
I haven't found any other better option than reading roles in App from access_token...
Hi @BGajda13 . I also asked the same question here, but still not a good solution: AzureAD/microsoft-authentication-library-for-js#4389
When are you reading the access_token? Do you immediately after login get an access_token and look in it? or do you try to call your api, then first then get the access_token?
from ms-identity-javascript-angular-tutorial.
Hi @Thnslj, we use React in our project, but maybe this approach will work for you as well.
import { useMsal } from '@azure/msal-react'
import { loginRequest } from '@shared/auth/authConfig' // loginRequest contains { scopes: [YOUR_SCOPE] }
import jwt_decode from 'jwt-decode'
const useGetTokenHook = () => {
const { instance, accounts, inProgress } = useMsal()
const getToken = async () => {
try {
const response = await instance.acquireTokenSilent({
...loginRequest,
account: accounts[0],
})
const decodeToken: any = jwt_decode(response.accessToken)
} catch (error) {
console.error(error)
}
}
useEffect(() => {
if (inProgress === 'none' && accounts.length > 0) {
getToken()
}
}, [inProgress, accounts, instance])
}
However, it is still reading the roles from access_token
You can find more in these sources
https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/acquire-token.md
https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-react/docs/hooks.md
If you want send some information to your API every time you make request i recommend put logic from getToken()
for example in axios interceptors
Another example might be reading token from localStorage, so you don't need call API every time. We rely on the library for this.
const { instance } = useMsal()
const localStorageAccessTokenKey = Object.keys(
(instance as any).browserStorage.browserStorage.windowStorage
).find((key) => key.includes('accesstoken')) as string
const accessToken: any = JSON.parse(
window.localStorage.getItem(localStorageAccessTokenKey) as string
)?.secret
const decodeToken: any = jwt_decode(accessToken)
const accountRoles = decodeToken.roles
It is still a workaround, but we don't have to ask for the token every time
from ms-identity-javascript-angular-tutorial.
This issue has not seen activity in 14 days. If your issue has not been resolved please leave a comment to keep this open. It will be closed in 7 days if it remains stale.
from ms-identity-javascript-angular-tutorial.
This issue has been closed due to inactivity. If this has not been resolved please open a new issue. Thanks!
from ms-identity-javascript-angular-tutorial.
Related Issues (20)
- When using the MSALGuard and RoleGuard on a route, the Role guard will allow access even if the user does not have the correct role HOT 22
- MSAL redirect Login When click public action Controller
- Forget passeword returns with AADB2C error code HOT 5
- Document recommend approach for calling web API using PoP tokens HOT 2
- API Issue - 500 Error HOT 4
- Group claims not added HOT 5
- Use Angular's own router when handling redirect response HOT 16
- Refactor component to handle claims challenge HOT 15
- Documentation is outdated HOT 5
- How to maintain multiple ClientID's in Multitenant scenario with Vendor, Customers and a Microsft Tenant HOT 8
- How to handle access_denied: AADB2C90091: The user has cancelled entering self-asserted information. HOT 4
- Angular router.navigate not working inside a subscribe of acquireTokenSilent or loginPopup HOT 9
- "Call a web API using App Roles" does not use separate App Registrations for API and SPA HOT 2
- Need different scopes based on which page is being accessed HOT 2
- After login, need another layer of Admin approval when trying to access API HOT 2
- Can't call MS Graph using Azure B2C app id HOT 1
- Help with Error : IDX10503: Signature validation failed. The token's kid is: 'MYKEYID', but did not match any keys in TokenValidationParameters or Configuration. Keys tried
- how to enables CAE in Azure
- I want to add Check for User login whether B2C user is present I my DB then only want to do successful login ?
- Error when starting application: Unsupported digital envelope routines: [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ms-identity-javascript-angular-tutorial.