如何使用 ASP.NET Core 3.1 将 Android 应用程序集成到 Identity Server 以进行身份​​验证?

Posted

技术标签:

【中文标题】如何使用 ASP.NET Core 3.1 将 Android 应用程序集成到 Identity Server 以进行身份​​验证?【英文标题】:How to integrate Android App to Identity Server with ASP.NET Core 3.1 for Authentication? 【发布时间】:2021-01-26 13:44:03 【问题描述】:

我已经使用 Angular 模板创建了 ASP.NET Core 项目,并使用 Visual Studio 进行了身份验证。现在我正在开发 android 应用程序,并希望将其与我现有的 ASP.NET CORE 3.1 WEB API(后端)集成。 我在 appsettings.json 中为我的 android 应用添加了客户端,如下所示:

"IdentityServer": 
    "Clients": 
       "MyAngularApp": 
           "Profile": "IdentityServerSPA"
       ,
       "MyMobileApp": 
           "Profile": "NativeApp"
       
    

当我调用我的配置端点“https://localhost:4042/_configuration/MyMobileApp”时,我得到了以下响应;

"authority":"https://localhost:4042","client_id":"MyMobileApp","redirect_uri":"urn:ietf:wg:oauth:2.0:oob","post_logout_redirect_uri":"urn:ietf:wg:oauth:2.0:oob","response_type":"code","scope":"offline_access MyAppAPI openid profile"

我有以下问题;

redirect_uri 中的“urn:ietf:wg:oauth:2.0:oob”是什么意思?

当我像这样在客户端设置中添加 redirect_uri 时,

“MyMobileApp”:“Profile”:“NativeApp”,“RedirectUri”:“com.example.myapplication”

但是当我调用端点时我没有得到我定义的redirect_uri “https://localhost:4042/_configuration/MyMobileApp”,作为回应我得到了这个 "redirect_uri":"urn:ietf:wg:oauth:2.0:oob"。那么,如何更改默认的 RedirectUri?

我在 Android 中使用 AppAuth 库与 Identity Server 集成。

【问题讨论】:

【参考方案1】:

在 appsetting.json 中尝试您必须使用 IdentityServer - 客户端尝试这可能是您的问题将得到解决

"IdentityServer": 
  "IssuerUri": "urn:sso.company.com",
  "Clients": [
    
      "Enabled": true,
      "ClientId": "local-dev",
      "ClientName": "Local Development",
      "ClientSecrets": [  "Value": "<Insert Sha256 hash of the secret encoded as Base64 string>"  ],
      "AllowedGrantTypes": [ "implicit" ],
      "AllowedScopes": [ "openid", "profile" ],
      "RedirectUris": [ "https://localhost:5001/signin-oidc" ],
      "RequireConsent": false
    
  ]


【讨论】:

使用此客户端配置时,出现编译时错误“ System.InvalidOperationException: 'Type '' is not supported.'此异常最初是在此调用堆栈中引发的: Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureClients.GetClients() Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureClients.Configure(Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ApiAuthorizationOptions) Microsoft.Extensions.Options .OptionsFactory.Create(string) ... ".

以上是关于如何使用 ASP.NET Core 3.1 将 Android 应用程序集成到 Identity Server 以进行身份​​验证?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ASP.NET Core 3.1 将 Android 应用程序集成到 Identity Server 以进行身份​​验证?

如何在 Asp.net Core 3.1 中使用 Ajax 刷新或重新加载 ViewComponent?

如何将对象数组发送到服务器。 Asp.Net Core 3.1 405 方法不允许

如何在 ASP.NET Core 3.1 中逐行迭代列表

如何使用 Visual Studio 2019 在 Docker 容器中运行 ASP.NET Core 3.1 项目?

如何在 ASP.NET Core 3.1 中使用 Java?