De Client-managed authentication - Live SDK, nous pourrions trouver que vous devez passer la charge utile suivante pour l'enregistrement:
{"authenticationToken":"{Live-SDK-session-authentication-token}"}
Ensuite, j'ai vérifié LiveSDK et a essayé de récupérer le LiveConnectSession.AuthenticationToken en appelant LiveLoginResult.Session.AuthenticationToken
, mais il renvoie null.
Ensuite, j'ai vérifié l'authentification du flux de serveur pour le compte Microsoft, et j'ai trouvé qu'il utilisait Live SDK REST API - Signing users in with REST. J'ai essayé de simuler la demande d'authentification via le facteur pour vérifier ce problème. Voici mon test pour récupérer le jeton d'accès:
https://login.live.com/oauth20_authorize.srf?client_id={client-id}&redirect_uri={return-url}&response_type=code&scope=wl.basic+wl.offline_access+wl.signin
Comme vous pouvez le voir, nous ne pouvions pas récupérer le authentication_token
comme mentionné dans le document officiel au sujet Get an access token and an authentication token.
Puis, j'ai essayé d'utiliser le access_token
pour la journalisation comme suit, et j'ai trouvé que cela pouvait fonctionner.
Vous cherchez à utiliser le flux de clients MSAL pour obtenir d'autoriser l'accès à une Azure fonction que j'ai configuré pour utiliser l'authentification Microsoft.
Pour MSAL, vous pouvez le trouver enverrait la demande contre le point final suivant et les deux {"authenticationToken":"App.TokenRequest.AccessToken"}
et {"access_token":"App.TokenRequest.AccessToken"}
charge utile ne pouvait pas se connecter avec succès.
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
par mon test, étant donné que l'authentification/autorisation de Microsoft utilise les différents critères d'authentification, le jeton généré par chaque points de terminaison ne peut pas être appliqué à l'autre. Basé sur mon test, vous pouvez simplement créer votre application au Microsoft Account Developer Center et ajouter des informations d'authentification pour votre application de fonction Azur. Pour votre client, vous pouvez utiliser LiveSDK [obsolète] ou OneDrive SDK for CSharp pour la journalisation MSA et récupérer le access_token
pour vous connecter avec votre application de fonction azur.Voici mon client UWP pour se connecter avec SDK onedrive, vous pouvez vous y référer:
var msAuth = new MsaAuthenticationProvider(
"{app-Id}", //application id of your app
"urn:ietf:wg:oauth:2.0:oob", //the redirect url for your native application in your app
new string[] { "wl.signin", "offline_access" });
await msAuth.AuthenticateUserAsync();
Pour MsaAuthenticationProvider
, vous pouvez consulter à Authentication Adapter for the OneDrive SDK.
Je vais essayer l'onedrive sdk, mais il semble que le cœur du problème est que MSAL cible le nouveau point de terminaison, je ne peux pas utiliser l'autorisation facile que je peux configurer sur le service App dans le portail . Puis-je utiliser des comptes Work et Personal dans le OneDrive SDK? – snowCrabs
Par mon test, pour les applications enregistrées sur [Microsoft Application Registration Portal] (https://apps.dev.microsoft.com/), cela fonctionnerait avec le compte Microsoft. Pour les applications enregistrées sur [Microsoft Azure Active Directory] (https://manage.windowsazure.com/), les utilisateurs professionnels ou scolaires de votre client sont pris en charge. Pour plus de détails, vous pouvez vous reporter à [Adaptateur d'authentification pour le SDK OneDrive] (https://github.com/OneDrive/onedrive-sdk-dotnet-msa-auth-adapter). –
Pour autant que je sache, MSAL ne pouvait pas fonctionner avec l'authentification/autorisation d'Azure App Service pour le moment. –