먼저 프로젝트를 스케치하겠습니다.
인턴쉽을 위해서는 기존 시스템에 기능을 추가해야합니다. OAuth2를 통해 사용자가 권한을 부여한 타사 클라이언트는 AX 웹 서비스의 데이터에 액세스 할 수 있어야합니다. 나는 클라이언트가 전화를 걸고 AX 서비스를 호출 할 수있는 ‘프록시 웹 서비스’를 만들어야한다는 것을 이해하지만 OAuth2 부분에 대해서는 약간 확실하지 않습니다. 대부분의 자습서 및 안내서는 Facebook 또는 Google 로그인에 ASP.NET의 ID를 사용하는 것에 관한 것입니다. 필요하지 않습니다. 기존 자격 증명을 사용해야하므로 고유 한 OAuth2 서비스를 만들어야합니다.
이에 대한 자습서, 안내서 또는 설명을 찾기가 어렵습니다. OAuth2와 수행해야 할 작업을 이해하지만 이전에는 그런 일을 한 적이 없으며 시작하기가 어렵습니다. 내가 찾은 것에 가장 가까운 것은이 github repo link 이지만 솔루션은 빌드되지 않습니다.
내가 염두에 둔 것은 클라이언트 (타사)가 자신을 등록하고 고객 ID를 얻을 수있는 ASP.NET MVC 웹 사이트를 만드는 것입니다. ASP.NET API를 사용하여 필요한 토큰과 매개 변수를 취하는 API를 만들고 Dyn AX 서비스에 액세스하려고했습니다.
이것이 맞습니까? 아니면 완전히 틀렸습니까? 자신 만의 oauth2 서버 / 서비스 구축에 관한 도움이나 링크가 있으면 좋을 것입니다.
답변
Taiseer Joudeh 의 훌륭한 블로그 게시물 에 자세한 단계별 설명이 있습니다.
답변
또한 토큰 부분을 생성하는 방법에 대한 기사를 찾는 데 어려움을 겪었습니다. 나는 하나를 찾지 못했고 내 자신을 썼다. 도움이된다면 :
해야 할 일은 :
- 새로운 웹 애플리케이션 만들기
- 다음 NuGet 패키지를 설치하십시오.
Microsoft.Owin
Microsoft.Owin.Host.SystemWeb
Microsoft.Owin.Security.OAuth
Microsoft.AspNet.Identity.Owin
- OWIN
startup
클래스 추가
그런 다음 index.js
다음 내용 으로 HTML과 JavaScript ( ) 파일을 작성하십시오 .
var loginData = 'grant_type=password&username=test.test@mail.com&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);
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript" src="index.js"></script>
</body>
</html>
OWIN startup
클래스에는 다음 내용이 있어야합니다.
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 PathString("/token"),
Provider = new OAuthAuthorizationServerProvider()
{
OnValidateClientAuthentication = async (context) =>
{
context.Validated();
},
OnGrantResourceOwnerCredentials = async (context) =>
{
if (context.UserName == "test.test@mail.com" && context.Password == "test123")
{
ClaimsIdentity oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
context.Validated(oAuthIdentity);
}
}
},
AllowInsecureHttp = true,
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1)
};
app.UseOAuthBearerTokens(OAuthOptions);
}
}
}
프로젝트를 실행하십시오. 팝업에 토큰이 표시되어야합니다.
답변
나는 똑같은 것을 연구하고 ASP.NET 위에 OAuth와 OpenID를 구현 하는 identityserver 를 우연히 발견했습니다 . Entity Framework에 대한 지속성 지원을 통해 ASP.NET ID 및 Membership Reboot 와 통합됩니다 .
따라서 질문에 대답 하려면 OAuth 및 OpenID 서버 설정 방법에 대한 자세한 문서를 확인하십시오 .
답변
Gmail : OAuth
- 고토 링크
- Gmail 사용자 이름 비밀번호로 로그인
- 왼쪽 상단의 Google 메뉴를 클릭하십시오
- API 관리자를 클릭하십시오.
- 자격 증명을 클릭하십시오
- 신임 정보 작성을 클릭하고 OAuth 클라이언트를 선택하십시오.
- 웹 애플리케이션을 애플리케이션 유형으로 선택하고 이름-> 권한있는 리디렉션 URL 입력 (예 : http : // localhost : 53922 / signin-google )-> 생성 버튼을 클릭하십시오. 자격 증명이 생성됩니다. PLS의 메모를 확인
Client ID
하고Secret ID
. 마지막으로 확인을 클릭하여 자격 증명 팝업을 닫습니다. - 다음으로 중요한 단계는를 활성화하는 것
Google API
입니다. 왼쪽 창에서 개요를 클릭하십시오. Google API
아래의 소셜 API 섹션을 클릭하십시오 .- 사용을 클릭하십시오.
그게 전부 구글 부분입니다.
애플리케이션으로 돌아와서 App_start/Startup.Auth.cs
다음 스 니펫을 열고 주석을 해제하십시오.
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = "",
ClientSecret = ""
});
업데이트 ClientId
및 ClientSecret
의 값으로 Google API
이미 만든 자격 증명.
- 응용 프로그램을 실행
- 로그인을 클릭하십시오
- ‘다른 섹션을 사용하여 로그인’섹션에 Google 버튼이 있습니다.
- 구글 버튼을 클릭
- 응용 프로그램은 사용자 이름과 암호를 입력하라는 메시지를 표시합니다
- Gmail 사용자 이름과 비밀번호를 입력하고 로그인을 클릭하십시오.
- 그러면 OAuth가 수행되고 응용 프로그램으로 돌아와
Gmail
ID 를 등록하라는 메시지가 표시됩니다 . - 등록을 클릭하여
Gmail
ID를 애플리케이션 데이터베이스 에 등록하십시오 . - 아이디 세부 정보가 맨 위에 일반 등록으로 표시됩니다
- Gmail을 통해 로그 아웃 한 후 다시 로그인하십시오. 그러면 자동으로 앱에 로그인됩니다.