Je vais d’abord dessiner mon projet:
Pour mon interne, je dois append des fonctionnalités à un système existant. Un client tiers doit pouvoir accéder aux données des services Web AX une fois qu’il est autorisé par l’utilisateur via oauth2. Je comprends que je dois créer un «service Web proxy» auquel le client peut faire ses appels et qui appelle les services AX, mais je ne suis pas certain de la partie oauth2. La plupart des didacticiels et des guides concernent l’utilisation de l’identité ASP.NET pour les connexions Facebook ou Google. Je n’ai pas besoin de ça, j’ai besoin d’utiliser les identifiants existants, donc j’ai besoin de faire mon propre service oauth2.
J’ai du mal à trouver des tutoriels, des guides ou des explications à ce sujet. Je comprends oauth2 et ce qui doit être fait, mais je n’ai jamais fait une telle chose auparavant et j’ai du mal à démarrer. La chose la plus proche de ce dont j’ai besoin est ce lien de repository github , mais la solution ne se construit pas.
Ce que je pensais est de créer un site Web ASP.NET MVC où les clients (tiers) peuvent s’inscrire et acquérir leurs identifiants clients. Avec l’API ASP.NET, je voulais créer l’API qui prend les jetons et les parameters requirejs, puis accéder aux services Dyn AX.
Est-ce correct ou est-ce que je me trompe complètement? Toute aide ou liens concernant la création de votre propre serveur / service oauth2 serait bien.
Il y a un billet de blog shiny de Taiseer Joudeh avec une description détaillée étape par étape.
J’ai également eu du mal à trouver des articles sur la façon de générer la partie jeton. Je n’ai jamais trouvé un et écrit le mien. Donc, si ça aide:
Les choses à faire sont:
Microsoft.Owin
Microsoft.Owin.Host.SystemWeb
Microsoft.Owin.Security.OAuth
Microsoft.AspNet.Identity.Owin
startup
OWIN Créez ensuite un fichier HTML et un fichier JavaScript ( index.js
) avec ces contenus:
var loginData = 'grant_type=password&[email protected]&password=test123'; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { alert(xmlhttp.responseText); } } xmlhttp.open("POST", "/token", true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send(loginData);
La classe de startup
OWIN doit avoir ce contenu:
using System; using System.Security.Claims; using Microsoft.Owin; using Microsoft.Owin.Security.OAuth; using OAuth20; using Owin; [assembly: OwinStartup(typeof(Startup))] namespace OAuth20 { public class Startup { public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; } public void Configuration(IAppBuilder app) { OAuthOptions = new OAuthAuthorizationServerOptions() { TokenEndpointPath = new PathSsortingng("/token"), Provider = new OAuthAuthorizationServerProvider() { OnValidateClientAuthentication = async (context) => { context.Validated(); }, OnGrantResourceOwnerCredentials = async (context) => { if (context.UserName == "[email protected]" && context.Password == "test123") { ClaimsIdentity oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType); context.Validated(oAuthIdentity); } } }, AllowInsecureHttp = true, AccessTokenExpireTimeSpan = TimeSpan.FromDays(1) }; app.UseOAuthBearerTokens(OAuthOptions); } } }
Exécutez votre projet. Le jeton doit être affiché dans la fenêtre contextuelle.
Je recherche la même chose et je suis tombé sur IdentityServer qui implémente OAuth et OpenID sur ASP.NET. Il s’intègre avec l’ identité ASP.NET et le redémarrage de l’adhésion avec prise en charge de la persistance pour Entity Framework.
Donc, pour répondre à votre question, consultez leur document détaillé sur la façon de configurer un serveur OAuth et OpenID .
Gmail: OAuth
Client ID
du Client ID
et l’ Secret ID
. Enfin, cliquez sur OK pour fermer les informations d’identification. Google API
. Cliquez sur Présentation dans le volet gauche. Google API
sous la section API sociales. C’est tout de la part de Google.
Revenez à votre application, ouvrez App_start/Startup.Auth.cs
et décommentez l’extrait suivant
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() { ClientId = "", ClientSecret = "" });
Mettez à jour ClientId
et ClientSecret
avec les valeurs des informations d’identification de l’ Google API
que vous avez déjà créées.
Gmail
. Gmail
dans la firebase database de votre application.