如何在IdentityServer4上使用AppAuth-Android?

时间:2016-11-15 07:19:59

标签: android identityserver4

我已经为我的ASP.Net MVC客户端成功配置了Identityserver4,一切正常。 现在我正在寻找开发Android应用客户端。 MVC客户端和Android客户端使用相同的Identity Server进行身份验证和授权。 所以对于Android客户端我正在寻找"AppAuth-Android" GitHub库。但我无法找到任何样本或帮助将该库与IdentityServer4一起使用。我已经阅读了" AppAuth-Android"的文档。图书馆,它说

  

通常,AppAuth可以与支持本机应用程序的任何授权服务器(AS)一起使用。

所以我的问题是1)如何配置我的Identity Server以使用Android应用程序 2)如何在" AppAuth-Android"的帮助下验证我的Android应用程序。

非常感谢任何帮助。

有人可以为" AppAuth-Android"?

创建一个标签

2 个答案:

答案 0 :(得分:1)

基本上,您可以对identityserver4使用以下设置

new Client
           {
               ClientId = "client.android",
               RequireClientSecret = false,
               ClientName = "Android app client",
               AllowedGrantTypes = GrantTypes.Code,
               RequirePkce = true,
               RequireConsent = false,

               RedirectUris = { "net.openid.appauthdemo://oauth2redirect" },
               AllowedScopes =
               {
                   IdentityServerConstants.StandardScopes.OpenId,
                   IdentityServerConstants.StandardScopes.Profile,
                   IdentityServerConstants.StandardScopes.Email,
                   IdentityServerConstants.StandardScopes.Phone,
                   "api1"
               },
               AllowOfflineAccess = true
           }

无论如何,您可以参考https://github.com/IdentityServer/IdentityServer4/issues/479了解有关此问题的详细信息。

答案 1 :(得分:1)

服务器端的数据应该与Android应用程序中使用的数据相同。

将客户端添加到服务器端

  new Client
        {
            ClientId = "myClientId",
            ClientName = "myClientName",
            AllowedGrantTypes = GrantTypes.CodeAndClientCredentials,
            RequireConsent = false,

            ClientSecrets =
            {
                new Secret("myClientSecret".Sha256())
            },

            RedirectUris = { "myRedirectUri://callback" },

            AllowedScopes =
            {
                IdentityServerConstants.StandardScopes.OpenId,
                IdentityServerConstants.StandardScopes.Profile,
                IdentityServerConstants.StandardScopes.Email,
                IdentityServerConstants.StandardScopes.Phone,
            },

            AllowOfflineAccess = true
        }

在Android应用中,您应该拥有相同的clientIdclientSecretredirectUri ..

我使用AppAuth-android库制作了一个示例,您只需编辑gradle.properties中的数据,然后检查here