OAuth로 ADFS 인증을 사용하여 webapp와 webapi간에 통신하려고합니다. 나는 ADFS4를 사용하고 있으며 이에 따라 서버 응용 프로그램과 Webapi로 응용 프로그램 그룹을 구성했습니다. userdetails, 특히 webapi 컨트롤러에서 사용자 이름을 받으려고합니다. webapi에 전달 된 액세스 토큰 내에서 사용자 이름 세부 정보를 전달할 수 있습니까? 여기에이 웹 애플리케이션 측에서 무슨 짓을 다음 Webapi 끝에서ADAP4-OAuth2의 WebAPI에서 사용자 이름을 얻을 수 없습니다. OpenID
authContext = new AuthenticationContext(Startup.authority, false);
ClientCredential credential = new ClientCredential(Startup.clientId, Startup.appKey);
string accessToken = null;
bool isAuthenticated = User.Identity.IsAuthenticated; //return true
string username = User.Identity.Name; // returns username
string userId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Name).Value; // returns username
HttpClient httpClient = new HttpClient();
try
{
result = authContext.AcquireTokenAsync(Startup.apiResourceId, credential).Result;
accessToken = result.AccessToken;
}
catch (AdalException ex)
{
}
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response = httpClient.GetAsync(Startup.apiResourceId + "/api/ConfApi").Result;
, ADFS 인증 후 웹 애플리케이션 컨트롤러에서
, Startup.Auth.cs에, 나는이 코드
public void ConfigureAuth(IAppBuilder app)
{
JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
TokenValidationParameters = new TokenValidationParameters() {
SaveSigninToken = true,
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
}
});
}
를 추가 한
그러나 ConfApi 컨트롤러에서 사용자 세부 정보가있는 클레임을 찾을 수 없습니다.
Webapi 컨트롤러에서 사용자 세부 정보를 수신하려면 어떻게해야합니까?
도움 주셔서 감사합니다.
가능한 복제본 [MSIS9649 : 잘못된 OAuth 요청을 받았습니다. 'assertion'매개 변수 값이 유효한 액세스 토큰이 아닙니다.] (https : // stackoverflow.com/questions/43867426/msis9649-received-invalid-oauth-request-the-assertion-parameter-value-is-not) –