- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Identity Server 的新手。我之前没有配置过。但我正在开展的项目需要它。
该 API 将为 Angular JS 客户端、iOS 应用程序和 Android 应用程序提供服务。我们需要实现身份验证和授权。
注意:我正在尝试在同一个 Web API 项目中配置 Identity Server 和我的 API。
我已按照文档进行操作并配置了 Identity Server,如下所示:
在startup.cs中的ConfigureServices()
services.AddTransient<IProfileService, CustomProfileService>();
services.AddTransient<IResourceOwnerPasswordValidator, CustomResourceOwnerPasswordValidator>();
services.AddIdentityServer()
.AddTemporarySigningCredential()
// add the resources that need to be secured
.AddInMemoryApiResources(IdentityServerConfig.Resources.GetApiResources())
// add the clients that will be access the ApiResources
.AddInMemoryClients(IdentityServerConfig.Clients.GetClients());
CustomProfileService
和 CustomResourceOwnerPasswordValidator
与此答案相同:https://stackoverflow.com/a/35306021/1910735
在Configure()
// as this API will also be acting as an
app.UseIdentityServer();
// now setup the Identity Server client, this API will also be the client
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:44337",
RequireHttpsMetadata = false,
ApiName = "obApi"
});
这是GetClients()
public static IEnumerable<Client> GetClients()
{
var clients = new List<Client>();
var websiteGrants = new List<string> { GrantType.ResourceOwnerPassword };
var secret = new Secret("secret".Sha256());
var websiteClient = new Client()
{
// we will be using Angular JS to access the API - so naming it js
ClientId = "js",
// just a human friendly name
ClientName = "JavaScript Client",
// set to GrantType.ResourceOwnerPassword - because using Username/Password to login
AllowedGrantTypes = websiteGrants,
// secret for authentication
//TODO: Change the secret
ClientSecrets = { secret },
// we need to access the fhApi from Angular JS front-end
// fhApi is defined in Resources file as an API Resource
AllowedScopes = { "obApi" }
};
clients.Add(websiteClient);
return clients;
}
这是GetApiResources()
public static IEnumerable<ApiResource> GetApiResources()
{
// e.g. if we want to protect an API called api1 - then we will add it here
// these values are hard coded for now - but we can get from DB, config file etc.
return new List<ApiResource>
{
new ApiResource("obApi", "Order2Bite API")
};
}
现在因为我想使用 Angular JS、iOS 和 Android,我只想从身份服务器获取访问 token ,然后使用访问 token 进行身份验证和授权。
为此,我尝试从 JS 客户端访问 /connect/token
但我收到 invalid_client
错误。
var user = { client_id: "js", grant_type: 'password', username: "testuser", password: "testpasswrd", scope: 'obApi' };
var urlEncodedUrl = {
'Content-Type': 'application/x-www-form-urlencoded',
};
this.$http({
method: 'POST', url: "http://localhost:44337/connect/token",
headers: urlEncodedUrl,
data: user,
})
.then(data => {
console.log(data)
},
data => {
console.log(data)
});
1 - 为什么我会收到此错误?
2 - 由于我需要在 JS、Android 和 iOS 中以编程方式获取 token ,因此我需要使用 /connect/token
,我对此是否正确?我走的路正确吗?
最佳答案
invalid_client 错误通常意味着客户端 ID 或客户端 key 不正确。在这种情况下,您不会在对 IdentityServer 的请求中包含客户端 key 。将“client_secret: 'secret'” 添加到您的请求
更新数据:
var user = { client_id: "js", client_secret: "secret", grant_type: 'password', username: "testuser", password: "testpasswrd", scope: 'obApi' };
或者,您不能在客户端配置中要求 ClientSecret
var websiteClient = new Client()
{
// we will be using Angular JS to access the API - so naming it js
ClientId = "js",
// just a human friendly name
ClientName = "JavaScript Client",
// set to GrantType.ResourceOwnerPassword - because using Username/Password to login
AllowedGrantTypes = websiteGrants,
// secret for authentication
//TODO: Change the secret
ClientSecrets = { secret },
// Disable client secret validation
RequireClientSecret = false,
// we need to access the fhApi from Angular JS front-end
// fhApi is defined in Resources file as an API Resource
AllowedScopes = { "obApi" }
};
这是来自 IdentityServer4 ClientSecretValidator.cs 的片段,其中包含您返回的确切错误作为证据 https://github.com/IdentityServer/IdentityServer4/blob/release/src/IdentityServer4/Validation/ClientSecretValidator.cs
var parsedSecret = await _parser.ParseAsync(context);
if (parsedSecret == null)
{
await RaiseFailureEvent("unknown", "No client id found");
_logger.LogError("No client identifier found");
return fail;
}
关于获取 JS、Android 和 iOS token 的第二个问题,您可能需要考虑针对每种情况使用哪种 OpenID 授予类型。我从 IdentityServer 开发人员那里看到的一般建议是对 Web 应用程序和授权代码(或混合)流使用隐式流。你可以在这里读更多关于它的内容: http://docs.identityserver.io/en/release/topics/grant_types.html
关于oauth-2.0 - Identity Server 4 - 出现 invalid_client 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43912622/
我试图实现的目标: iOS 客户端向后端发送 JWT token 。 后端 (Java) 调用 https://appleid.apple.com/auth/token验证 token 。 到目前为止
我正在开发一个受 OAuth2 身份验证保护的基本 grails 应用程序——code here .它只不过是 spring-security 和 spring-security-oauth 插件对于
我已经设置了一个在 IIS 中运行的 IdentityServer3 实例。 var validators = new List> { new
我正在尝试验证 Connect2id使用 Go test 进行设置,我收到以下错误。 "Client authentication failed: Missing client authenticat
我面临一个非常糟糕的问题,因为我阅读了很多指南和教程,但没有任何效果。 结果总是一样的:{"error":"invalid_client"} 我得到了代码、identityToken 和我需要的一切—
美好的一天, 我在获取访问 token 时遇到问题。我已按照此处的指南进行操作:http://developers.box.com/oauth/并且已经获取了我的 client_id、client_s
我正在尝试使用 IdentityServer3,但不知道为什么我总是收到“invalid_client”错误,无论我做什么。 这是我正在使用的代码: //Startup.cs (Auth c# pro
http://localhost:3000/oauth/token { "error": "invalid_client", "error_description": "Client authenti
store_token = context.acquire_token_with_device_code(resource_uri, code, client_id) File "/Users/j
我已在我的网络服务器上安装了 Google Drive Realtime API 示例文件,如下 these instructions ,包括在 Cloud Console 中生成 client_id
我正在为我的应用程序使用 Google Apps API,并尝试使用 OAuth2 对其进行授权。我使用 Google API 控制台创建了一个项目和其中的一个应用程序。我使用以下 URL 进行授权:
我正在使用带有 django-oauth-toolkit 的 django rest 框架。当我在本地主机上请求访问 token 时,它会给我访问 token ,如下所示 ~/django_app$
我有一个使用 ASP.NET Identity 运行的 IdentityServer4 应用程序。我想使用它,以便其他应用程序的用户可以通过我的远程身份服务器登录。 我已使用以下设置在身份服务器中配置
我正在使用带有 django-oauth-toolkit 的 django rest 框架。当我在本地主机上请求访问 token 时,它会给我访问 token ,如下所示 ~/django_app$
我在使用 Amazon Cognito 中的授权代码流时遇到困难。我正在尝试构建的工作流程如下: 用户使用内置 Cognito UI 进行身份验证。 Cognito 使用授权码重定向回来。 我将代码发
我有一个旧项目,试图从谷歌分析中检索数据。 它不工作,所以我想找出问题所在。 找到了在服务器端使用 Analytics 的示例代码。 scope = ['https://www.googleapi
我们正在使用 ShareKit对于在 youtube 上分享视频,代码工作正常但现在出现错误 YouTube authentication finished with error:Error Dom
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我正在使用 python 社交身份验证在我的应用程序上实现谷歌登录。但是我得到以下错误 Error: invalid_client The OAuth client was not found. 我已
我正在尝试使用 spotifyr 包从 Spotify 中提取数据,但是任何需要访问 token 的函数都不起作用(例如 get_my_recently_played(limit = 5))。运行时出
我是一名优秀的程序员,十分优秀!